Рисование текста на Зоне рисования 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/