質問

できいてください点の方向で変化する特性の素子のGtk2Hs.

例えば、変更方法についての背景色のDrawingArea?

役に立ちましたか?

解決

様々な方法があり修正ウィジェットしてくれます。例えば、変更、背景のスタイルを使用でき widgetModifyBg (対応するCの関数 gtk_widget_modify_bg()).原則として、変更した場合のスタイルの状態などStateNormal)しておきたいものでした。

Yいついてお聞かせくださいスタイルをしたいRCファイルとしての負荷のファイルからのアプリケーションですが、このような機能 gtk_rc_parse() とらわれないでgtk2hs.

次に例を示します。

import Graphics.UI.Gtk

main = do
    initGUI
    window <- windowNew
    window `onDestroy` mainQuit
    drawingArea <- drawingAreaNew
    window `containerAdd` drawingArea
    widgetModifyBg drawingArea StateNormal (Color 0xffff 0 0)
    widgetShowAll window
    mainGUI

まだカスタム描画に基づくウィジェットのスタイルで行うことができます使用 widgetGetState, は、 widgetStyle 財産の styleGet* 家族の機能(例えば styleGetText).この例:

import Graphics.Rendering.Cairo
import Graphics.UI.Gtk hiding (fill)
import Graphics.UI.Gtk.Gdk.Events (Event(Expose))

expose widget rect = do
    state <- widgetGetState widget
    style <- widget `get` widgetStyle
    (Color red green blue) <- styleGetText style state
    drawWindow <- widgetGetDrawWindow widget

    renderWithDrawable drawWindow $ do
        moveTo 50 50
        setFontSize 20
        setSourceRGB (fromIntegral red / 0xffff)
                     (fromIntegral green / 0xffff)
                     (fromIntegral blue / 0xffff)
        showText "O HAI"
        fill

    return False

main = do
    initGUI
    window <- windowNew
    window `onDestroy` mainQuit
    drawingArea <- drawingAreaNew
    drawingArea `onExpose` \(Expose sent area region count) ->
        expose drawingArea area
    window `containerAdd` drawingArea
    widgetShowAll window
    mainGUI
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top