我可以使用DrawingArea
和drawRectangle
之类的基元绘制drawLine
。如何在该区域上绘制文字?我最感兴趣的是能够快速输出单行文本的东西。
Graphics.UI.Gtk.Gdk.Drawable.layoutLine
似乎是我想要的,但它需要Graphics.Rendering.Pango.Layout.LayoutLine
作为输入。如何构建LayoutLine
?
有没有比这样做更好的选择?
谢谢!
答案 0 :(得分:3)
我不知道你是否会考虑使用开罗。如果是这样,我认为函数showText
可能正是您要找的。在编写文本之前,请使用cairo函数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/
答案 1 :(得分:1)
我找到了用Pango做到这一点的方法。
layout <- widgetCreateLayout drawAreaWidget stringToDraw
然后,您可以将此新创建的布局与drawLayout
和drawLayoutWithColors
等功能结合使用。