どのように変化特性DrawingAreaにGtk2Hs
質問
できいてください点の方向で変化する特性の素子の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
所属していません StackOverflow