如何使用Haskell在GTK中显示原始像素数据的图像?

时间:2015-06-19 05:26:13

标签: haskell graphics gtk

我想使用Rasterific库在Haskell中创建一个图像,然后在GTK窗口中显示该图像; Rasterific库让我生成一个RBGA格式的32位像素深度图像,但我无法弄清楚如何拍摄这张原始图像并将其显示在窗口或drawarea或GTK中的任何内容中。

(我花了很多时间查看文档,但是我一直很难看到如何将这些部分放在一起,特别是因为Haskell文档通常不存在,并且在某些时候开始图书馆参与的方式对我来说并不完全清楚。)

2 个答案:

答案 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