Рисование текста в области рисования GTK в Haskell

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

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

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

Спасибо!


person Community    schedule 14.03.2011    source источник


Ответы (2)


Я не знаю, рассмотрите ли вы возможность использования Каира. Если это так, я думаю, что функция 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/

person Ivan Perez    schedule 18.03.2011

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

layout <- widgetCreateLayout drawAreaWidget stringToDraw

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

person Community    schedule 20.03.2011