Рисование текста на Зоне рисования GTK в Хаскеле

У меня есть DrawingArea на котором я могу рисовать, используя такие примитивы, как drawRectangle а также drawLine, Как мне нарисовать текст в этой области? Меня больше всего интересует то, что быстро выводит одну строку текста.

Graphics.UI.Gtk.Gdk.Drawable.layoutLine кажется, что я хочу, но он хочет Graphics.Rendering.Pango.Layout.LayoutLine в качестве ввода. Как мне это построить LayoutLine?

Есть ли лучшие альтернативы, чем делать это таким образом?

Спасибо!

2 ответа

Решение

Я нашел способ сделать это с Панго.

layout <- widgetCreateLayout drawAreaWidget stringToDraw

Затем вы можете использовать этот недавно созданный макет с такими функциями, как drawLayout а также drawLayoutWithColors,

Я не знаю, подумаете ли вы об использовании Каира. Если так, я думаю, что функция showText может быть то, что вы ищете. Используйте функцию Каира moveTo для перемещения в определенное место, прежде чем писать текст. Это один из самых простых рабочих примеров, которые я могу привести:

import Graphics.UI.Gtk
import Graphics.Rendering.Cairo

main :: IO ()
main = do
    initGUI
    window      <- windowNew
    drawingArea <- drawingAreaNew
    containerAdd window drawingArea

    drawingArea `onExpose` (\_ -> renderScene drawingArea)
    window `onDestroy` mainQuit

    windowSetDefaultSize window 640 480
    widgetShowAll window
    mainGUI

renderScene :: DrawingArea -> IO Bool
renderScene da = do
    dw <- widgetGetDrawWindow da
    renderWithDrawable dw $ do setSourceRGBA 0.5 0.5 0.5 1.0
                               moveTo 100.0 100.0
                               showText "HelloWorld"
    return True

Я нашел следующее, чтобы быть отличным руководством, хотя это было не для Haskell: http://zetcode.com/tutorials/cairographicstutorial/cairotext/

Другие вопросы по тегам