我希望在窗口中的某個屏幕上繪製單個像素或用於在haskell中進行實時顯示。Haskell像素繪圖庫linux
我剛剛開始使用haskell(但不是函數式編程,而不是圖形),所以我試圖用它創建一些基本的圖形事物。
我曾嘗試使用SDL,但下面的代碼給了我一個空白屏幕:
import Prelude
import Graphics.UI.SDL as SDL
createColor screen r g b = SDL.mapRGB (SDL.surfaceGetPixelFormat screen) r g b
drawGrad screen = SDL.setColors screen [SDL.Color x y 255 | x <- [0..255], y <- [0..255]] 800
main = do
SDL.init [InitEverything]
setVideoMode 256 256 32 []
screen <- getVideoSurface
drawGrad screen
SDL.flip screen
quitHandler
quitHandler :: IO()
quitHandler = do
e <- waitEvent
case e of
Quit -> return()
otherwise -> quitHandler
我不看看如何做到這一點。我認爲SDL希望您將像素直接寫入表面;但'SDL.surfaceGetPixels'的返回類型沒有公開。如果是這樣,我想可以使用'withForeignPtr'。 – 2009-12-09 15:24:34
@Jason Orendorff - 這不是真的,實際上返回類型是一個Ptr到一個空的數據聲明(這是合法的),這迫使你使用castPtr這是有道理的,因爲指針的實際類型將取決於表面的格式(比特深度,像素格式等)。看看我的答案,看看如何去做。 – 2010-11-21 17:04:45