drawing - 开罗与 GDK 有什么关系?

标签 drawing cairo gdk x11 drawing2d

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

最佳答案

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

关于drawing - 开罗与 GDK 有什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10625367/

相关文章:

php - 沿路径绘制平行线 - PHP GD

c - GTK3 和 cairo 太慢

python - Linux 上使用 pygtk (gtk.gdk) 的桌面/根窗口上的键盘/鼠标事件

android - 在 ImageView 上绘图

android - 蜂窝硬件加速似乎不适用于 setColorFilter

c# - WPF TileBrush 和 DrawingContext.DrawRectangle ——相对于矩形的左上角?

gtk - 如何在 Cairo/Gtk 中绘制圆角图像?

cairographics glade gtk3 c 编程

window - 如何获得 Gdk.Window 任务图标或标题?

gtk - GtkWindow 和 GdkWindow 的区别?