从整数数组中显示 gtkmm 中的图像

发布于 2024-08-12 05:54:40 字数 92 浏览 4 评论 0原文

我有一个带有灰度图像的整数数组,我需要在我的应用程序中显示它。我正在使用 gtkmm 用 C++ 进行编程,但找不到任何像画布这样允许您显示和访问图像中每个像素的小部件。

I have an integer array with a gray scale image and I need to show it in my application. I'm programing in C++ with gtkmm and I can't find any widget like a canvas that allow you to show and access each pixel in the image.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

扎心 2024-08-19 05:54:41

据我了解,您需要使用以下带构造函数的类:

Gdk::Bitmap::Bitmap(const char *data, int width, int height)

创建位图并将数据加载到其中。

稍后您可以使用 Gdk::Pixmap 或 Gdk::Window 进行绘制。还有Pixbuf类来存储像素。

As far as I understand you need to use the following class with constructor:

Gdk::Bitmap::Bitmap(const char *data, int width, int height)

to create bitmap and load your data into it.

Later you can use Gdk::Pixmap or Gdk::Window to draw. There is also Pixbuf class to store pixels.

御守 2024-08-19 05:54:41

我也在努力寻找解决方案。到目前为止,我发现的唯一方法(使用 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()。

I am trying to find a solution as well. The only way I found so far (using gtkmm-3.0) is to convert the grayscale image to RGB, pixel by pixel.

You allocate another data buffer three times as big as the original one. Then you copy each pixel from the original to the copy, three times. To create 1280*1024 (my case) pixbuf you can call:

Gdk::Pixbuf::create_from_data(copy, Gdk::COLORSPACE_RGB, false, 8, 1280, 1024, 1280*3);

To access the pixels in the bitmap I suppose you can use Gdk::Pixbuf::get_pixels().

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文