4

GDK 库的功能到底是什么? Cairo 是如何适应的?它们是竞争技术还是互补技术?其中一个是否以任何方式依赖于另一个?

4

2 回答 2

7

TL;博士:

在最近的版本中,GDK 是 GTK+ 的平台抽象层。它还为 Cairo 提供了一些平台集成(例如用于显示使用 Cairo 创建的图像),但在其他方面独立于它。

更长的版本:

GDK 最初是作为Xlib的包装器,它是 X Window 系统的客户端库。它支持 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 表面。

于 2015-02-11T12:42:53.880 回答
0

Cairo 是 gdk 使用的绘图后端。

于 2012-05-16T19:32:43.897 回答