GDK库的功能到底是什么,Cairo是如何适应的?它们是竞争技术还是互补技术?它们中的一个在某种程度上依赖于另一个吗?
发布于 2012-05-17 03:32:44
Cairo是gdk使用的绘图后端。
发布于 2015-02-11 20:42:54
TL;DR:
在最近的版本中,GDK是GTK+的平台抽象层。它还为Cairo提供了一些平台集成(例如,用于显示使用Cairo创建的图像),但在其他方面独立于Cairo。
较长版本:
GDK最初是作为X Window系统的客户端库Xlib的包装器。它支持GTK+所需的X Windows API的所有部分,包括绘图操作。
当GTK+被移植到其他窗口系统(如Windows)时,它演变成了一个平台抽象层。然后事实证明,从Xlib“继承”的绘图API是有问题的-它使移植变得困难,而且是有限的(例如,对透明度的支持很少)。因此,GDK的绘图功能被弃用,并在GTK+ 3中删除(参见Migrating from GTK+ 2.x to GTK+ 3: Use cairo for drawing)。
因此,GDK一开始是一个平台抽象层,包括一个绘图后端。在最近的版本中,Cairo是GTK+使用的绘图后端,GDK与Cairo并存,用于处理窗口创建和输入处理等平台方面。
GDK有一些使用Cairo的函数,但这些函数只允许与Cairo进行互操作。例如,gdk_cairo_create ()允许您为窗口创建Cairo表面,从而允许使用Cairo绘制到该窗口。
https://stackoverflow.com/questions/10625367
复制相似问题