【发布时间】:2012-05-24 10:03:00
【问题描述】:
GDK 库的功能究竟是什么? Cairo 是如何适应的?它们是竞争技术还是互补技术?其中一个是否以任何方式依赖于另一个?
【问题讨论】:
标签: drawing cairo gdk x11 drawing2d
GDK 库的功能究竟是什么? Cairo 是如何适应的?它们是竞争技术还是互补技术?其中一个是否以任何方式依赖于另一个?
【问题讨论】:
标签: drawing cairo gdk x11 drawing2d
TL;DR:
在最近的版本中,GDK 是 GTK+ 的平台抽象层。它还为 Cairo 提供了一些平台集成(例如用于显示使用 Cairo 创建的图像),但在其他方面独立于它。
加长版:
GDK 最初是作为Xlib(X 窗口系统的客户端库)的包装器。它支持 GTK+ 所需的 X Windows API 的所有部分,包括绘图操作。
当 GTK+ 被移植到其他窗口系统(如 Windows)时,GDK 演变为平台抽象层。后来发现,从 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 绘制到该窗口。
【讨论】:
Cairo 是 gdk 使用的绘图后端。
【讨论】: