gpt4 book ai didi

c++ - gtkmm 绘制单个像素

转载 作者:太空狗 更新时间:2023-10-29 21:49:40 25 4
gpt4 key购买 nike

引用Documentation for Gtkmms GdkRGB上的例子:

#include <gtk/gtk.h>
#define IMAGE_WIDTH 256
#define IMAGE_HEIGHT 256
guchar rgbbuf[IMAGE_WIDTH * IMAGE_HEIGHT * 3];
gboolean on_darea_expose (GtkWidget *widget,
GdkEventExpose *event,
gpointer user_data);
int
main (int argc, char *argv[])
{
GtkWidget *window, *darea;
gint x, y;
guchar *pos;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
darea = gtk_drawing_area_new ();
gtk_widget_set_size_request (darea, IMAGE_WIDTH, IMAGE_HEIGHT);
gtk_container_add (GTK_CONTAINER (window), darea);
gtk_signal_connect (GTK_OBJECT (darea), "expose-event",
GTK_SIGNAL_FUNC (on_darea_expose), NULL);
gtk_widget_show_all (window);
/* Set up the RGB buffer. */
pos = rgbbuf;
for (y = 0; y < IMAGE_HEIGHT; y++)
{
for (x = 0; x < IMAGE_WIDTH; x++)
{
*pos++ = x - x % 32; /* Red. */
*pos++ = (x / 32) * 4 + y - y % 32; /* Green. */
*pos++ = y - y % 32; /* Blue. */
}
}
gtk_main ();
return 0;
}
gboolean
on_darea_expose (GtkWidget *widget,
GdkEventExpose *event,
gpointer user_data)
{
gdk_draw_rgb_image (widget->window, widget->style->fg_gc[GTK_STATE_NORMAL],
0, 0, IMAGE_WIDTH, IMAGE_HEIGHT,
GDK_RGB_DITHER_MAX, rgbbuf, IMAGE_WIDTH * 3);
return TRUE;
}

但他们说“gdk_draw_rgb_image 已弃用,不应在新编写的代码中使用。”

我想要一个像素数组中的图像,我可以在其中直接操作像素。

基本上,我只是想“绘制”一个我之前想修改的像素数组。 Cairo 是一个不错的工具,但不适合我的目的。因此,rectangle 不是一个选项。

这不可能了吗?

好吧,我之前提到的示例是可行的,但我不希望将已弃用的库用于新代码。

那我还能怎样绘制我的像素呢?这是一个 gtk 示例。我们正在使用 GtkMM,我想知道是否有与之等效的东西。

非常感谢和最好的问候

最佳答案

必须使用 cairo。

GDK 3 中弃用并删除了所有 GDK 绘图函数。

您可以使用GdkPixbuf http://developer.gnome.org/gdk-pixbuf/unstable//gdk-pixbuf-The-GdkPixbuf-Structure.html#GdkPixbuf与 Cairo 交互函数 gdk_cairo_set_source_pixbufgdk_cairo_rectangle http://developer.gnome.org/gdk3/stable/gdk3-Cairo-Interaction.html .

关于c++ - gtkmm 绘制单个像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7941215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com