1

DrawingAreaやなどのプリミティブを使用して描画できる がありdrawRectangleますdrawLine。その領域にテキストを描画するにはどうすればよいですか? 私が最も興味を持っているのは、1 行のテキストをすばやく出力するものです。

Graphics.UI.Gtk.Gdk.Drawable.layoutLine私が欲しいもののようですが、Graphics.Rendering.Pango.Layout.LayoutLine入力として必要です。どうすればそれを構築できLayoutLineますか?

この方法よりも優れた代替手段はありますか?

ありがとう!

4

2 に答える 2

4

あなたがカイロの使用を検討するかどうかはわかりません。もしそうなら、その機能showTextはあなたが探しているものかもしれないと思います。moveToテキストを書く前に、カイロ機能を使用して特定の場所に移動します。これは、私が作成できる最も単純な作業例の 1 つです。

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/

于 2011-03-18T10:00:19.317 に答える
1

Pango でこれを行う方法を見つけました。

layout <- widgetCreateLayout drawAreaWidget stringToDraw

drawLayout次に、この新しく作成されたレイアウトをやなどの機能で使用できますdrawLayoutWithColors

于 2011-03-20T20:47:49.220 に答える