我想使用Rasterific库在Haskell中创建一个图像,然后在GTK窗口中显示该图像; Rasterific库让我生成一个RBGA格式的32位像素深度图像,但我无法弄清楚如何拍摄这张原始图像并将其显示在窗口或drawarea或GTK中的任何内容中。
(我花了很多时间查看文档,但是我一直很难看到如何将这些部分放在一起,特别是因为Haskell文档通常不存在,并且在某些时候开始图书馆参与的方式对我来说并不完全清楚。)
答案 0 :(得分:2)
为了这个目的,我写了一个名为AC-EasyRaster-GTK的软件包。
这是gtk2hs的包装。那个库提供了所有必要的部分,但实际上并不是那么容易理解。所以我写了一个库,所以我不必继续查看这些内容!
ib_new
为您提供了一个新的图像缓冲区,ib_write_pixel
可让您编写像素,ib_display
将启动GTK事件循环,在窗口中显示位图,并阻止调用线程,直到用户单击关闭。可悲的是,没有简单的方法可以在GTK上查看整个阵列。 (它需要特定的像素顺序,因平台而异......)
答案 1 :(得分:1)
我确信有更好的方法可以做到这一点,但我也没有找到它。您可以使用类似forM_ (range ((0,0),(w,h)))
的内容迭代原始图像中的所有像素,并使用以下内容将它们绘制到Cairo绘图上:(开罗调用是正确的,但我只是猜测Rasterific函数)
drawPixel color x y = do
setSourceRGBA (red color) (green color) (blue color) (alpha color)
rectangle x y 1 1
paint