Je veux créer un programme de haskell dans lequel une forme est dessinée dans une fenêtre. Quand je clique dans la fenêtre, la couleur de la forme devrait changer.Haskell, Changer la couleur de dessin sur la souris cliquez sur
Je suis venu avec ceci:
testDemo points =
runGraphics $
do
w <- openWindow "Test" (480, 550)
colorRef <- newIORef Green
let
loop0 = do
color <- readIORef colorRef
e <- getWindowEvent w
case e of
Button {pt=pt, isDown=isDown}
| isDown && color == Green -> writeIORef colorRef Red
| isDown && color == Red -> writeIORef colorRef Green
_ -> return()
color <- readIORef colorRef
drawInWindow w (withColor color (polyline points))
loop0
color <- readIORef colorRef
drawInWindow w (withColor color (polyline points))
loop0
Il fonctionne un peu. Le problème est, que je pense qu'un événement de fenêtre est déclenché presque tout le temps, donc tout est dessiné tout le temps ce qui le rend lent. Comment puis-je faire en sorte que je ne change le dessin que lorsqu'un clic est enregistré?
Pourriez-vous s'il vous plaît mentionner quel paquet vous utilisez pour la bibliothèque de fenêtrage? Gtk2hs? wxHaskell? autre? –
Eh bien, dans le code, il ressemble à ceci: importer Graphics.HGL –