如何将gtk2中的gdk_rgb_cmap_new更新为gtk3?

时间:2016-10-20 09:14:11

标签: c++ gtk gtk3 gtk2

我试图将某些软件从GTK2更新为GTK3;我已经取得了一些成功,但我遇到了问题,特别是与色彩映射有关的问题。

我读过的所有内容都说 GDKColormap 需要替换为 GDKVisual ,并且应该使用 Cairo 来渲染图形。我了解 - 或多或少 - GDKVisual 如何运作,但我有一个特殊问题: gdk_rgb_cmap_new(...)。似乎这个函数在 GDKVisual 中没有等价物,并且它不可能传入" private" (即我们自己的设计)将颜色映射到GTK3中。现在是这样的吗?如果是,我们如何在基于GTK3的软件中使用我们自己的色彩映射?我们是否必须自己手动编辑要通过 Cairo 显示的图像(它似乎也没有基于色彩图的功能)?

这可能是一个太具体的问题,但是我无法找到一个明显的GTK +论坛来询问它,所以如果有人有任何关于哪里可能更好问一下的指示,那么请说出来

更新

在GTK2中,我们使用了函数 gdk_draw_indexed_image(...),它的参数带有 GDKColormap ,可以使用 gdk_rgb_cmap_new创建( ...)即可。我现在正试图通过cairo函数 cairo_image_surface_create_for_data(...)来使用Cairo做类似的事情,但由于彩色图不再存在,我无法看到如何使用(例如) cairo_set_source_rgba(...)以获得与 gdk_draw_indexed_image(...)中的colormap参数相同的效果,除非我们在传递图像数据之前手动编辑图像数据这个功能。

我不确定曝光事件是如何相关的:我编辑了GTK2代码

gtk_signal_connect (GTK_OBJECT (canvas), "expose_event", (GtkSignalFunc) repaint_proc, (gpointer) tv_screen);

到GTK3代码

g_signal_connect (G_OBJECT (canvas), "draw", G_CALLBACK (repaint_proc), (gpointer) tv_screen);

但我不确定这与色彩问题有什么关系。

0 个答案:

没有答案