Image 在gtk中显示图像-是否需要gtk绘图区域?

Image 在gtk中显示图像-是否需要gtk绘图区域?,image,gtk,drawable,cairo,Image,Gtk,Drawable,Cairo,我试图显示从pixbuf(内存中的数据)加载的图像,并且每次都会更新该图像(因为pixbuf也会随着时间而变化)。我的问题是,由于窗口将只包含图像(正在定期更新),我需要一个gtk drawable或绘图区域吗?或者我可以简单地在窗口中显示图像吗?另一个选择是使用开罗。有人能提出一个好的方法吗?aGtkImage可以很好地工作,并且比您列出的所有内容都简单;-) 将文件加载到一个pixbuf中,会有一个新的来自文件构造函数的文件或类似的东西 是的,创建一个绘图区域并将其粘贴在盒子或其他地方 接下

我试图显示从pixbuf(内存中的数据)加载的图像,并且每次都会更新该图像(因为pixbuf也会随着时间而变化)。我的问题是,由于窗口将只包含图像(正在定期更新),我需要一个gtk drawable或绘图区域吗?或者我可以简单地在窗口中显示图像吗?另一个选择是使用开罗。有人能提出一个好的方法吗?

a
GtkImage
可以很好地工作,并且比您列出的所有内容都简单;-)

将文件加载到一个pixbuf中,会有一个新的来自文件构造函数的文件或类似的东西

是的,创建一个绘图区域并将其粘贴在盒子或其他地方

接下来,获取DrawingArea父窗口(将有一个类似get_window之类的方法)。这将是您的绘图

创建GC(图形上下文)-您不需要在其中设置任何特殊值

将DrawingArea连接到expose事件。在expose事件中,让它使用您创建的GC调用您的pixbuf在Drawable上的draw_pixbuf方法

无论何时以某种方式更新pixbuf,都可以调用相同的draw_pixbuf方法

你也可以考虑使用一个PixMax,如果你不是从一个文件中加载它,并打算画它。pixmap本身是可绘制的,因此您可以直接在其上绘制矩形和对象。在DrawingArea上显示它的唯一真正区别是需要调用draw_drawable方法,而不是draw_pixbuf


注意,我是从使用Perl/Gtk2的内存中编写的,它可能无法清晰地映射到您正在使用的任何语言。

thnx用于您的回复…我将使用C语言…但我将尝试您的方法…是的,函数调用将不同…我将研究它…thnx无论如何…thanx…但我尝试使用GtkImage…但我无法每次都显示图像…我使用expose事件和gtk_widget_queue_draw(窗口)每次显示更新的图像…但我得到的只是一个空白窗口…是否需要执行任何其他操作来每次显示修改的图像?如果需要的话,我会发布代码。。。。