【发布时间】:2023-03-07 22:55:01
【问题描述】:
我有一个带有灰度图像的整数数组,我需要在我的应用程序中显示它。我正在使用 gtkmm 在 C++ 中编程,但我找不到任何像画布这样的小部件,可以让您显示和访问图像中的每个像素。
【问题讨论】:
-
我遇到了同样的问题,想不通(不是我尝试太多,只是想为 lulz 绘制一个 mandelbrot)。有很多看似相似的像素缓冲区,文档非常少。
我有一个带有灰度图像的整数数组,我需要在我的应用程序中显示它。我正在使用 gtkmm 在 C++ 中编程,但我找不到任何像画布这样的小部件,可以让您显示和访问图像中的每个像素。
【问题讨论】:
据我了解,您需要将以下类与构造函数一起使用:
Gdk::Bitmap::Bitmap(const char *data, int width, int height)
创建位图并将数据加载到其中。
以后可以使用 Gdk::Pixmap 或 Gdk::Window 进行绘制。还有一个 Pixbuf 类来存储像素。
【讨论】:
我也在努力寻找解决方案。到目前为止,我发现的唯一方法(使用 gtkmm-3.0)是将灰度图像逐个像素地转换为 RGB。
您分配的另一个数据缓冲区是原始缓冲区的三倍。然后将每个像素从原件复制到副本,重复三次。要创建 1280*1024(我的情况)pixbuf,您可以调用:
Gdk::Pixbuf::create_from_data(copy, Gdk::COLORSPACE_RGB, false, 8, 1280, 1024, 1280*3);
要访问位图中的像素,我想您可以使用Gdk::Pixbuf::get_pixels()。
【讨论】: