我有一个可以使用和DrawingArea
等基元在其上绘制的。如何在该区域上绘制文本?我对快速输出单行文本的东西最感兴趣。drawRectangle
drawLine
Graphics.UI.Gtk.Gdk.Drawable.layoutLine
似乎是我想要的,但它想要一个Graphics.Rendering.Pango.Layout.LayoutLine
作为输入。我该如何构建它LayoutLine
?
有比这种方式更好的选择吗?
谢谢!
我不知道你是否会考虑使用开罗。如果是这样,我认为该功能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/
我已经找到了使用 Pango 执行此操作的方法。
layout <- widgetCreateLayout drawAreaWidget stringToDraw
然后,您可以将这个新创建的布局与 和 等功能一起drawLayout
使用drawLayoutWithColors
。