【问题标题】:How is Cairo related to GDK?Cairo 与 GDK 有什么关系?
【发布时间】:2012-05-24 10:03:00
【问题描述】:

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

【问题讨论】:

    标签: drawing cairo gdk x11 drawing2d


    【解决方案1】:

    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 绘制到该窗口。

    【讨论】:

      【解决方案2】:

      Cairo 是 gdk 使用的绘图后端。

      【讨论】:

      • 不,GDK和Cairo大部分是相互独立的;一个可以在没有另一个的情况下使用。如果有的话,GDK 是 Cairo 的后端,因为 GDK 可以显示使用 Cairo 渲染的图像。
      • 然而,Cairo 是 GTK+ 的绘图后端。
      猜你喜欢
      • 2019-09-14
      • 2011-08-19
      • 2011-11-17
      • 2014-07-27
      • 2016-04-29
      • 2021-11-08
      • 2017-06-25
      • 2019-01-09
      • 1970-01-01
      相关资源
      最近更新 更多