【发布时间】:2020-04-17 01:54:55
【问题描述】:
根据我的理解,函数xcb_copy_area 本质上是将一个区域从一个 xcb_drawable 复制到另一个。我不确定为什么它还会将图形上下文作为参数,因为副本的源可能已经被绘制或渲染。这种情况下这个参数有什么用呢?
值得注意的是,我对图形上下文的理解不是很好,但解释它们的资源并不多。我假设这是我对 xcb 内部情况的心理模型的问题。
【问题讨论】:
根据我的理解,函数xcb_copy_area 本质上是将一个区域从一个 xcb_drawable 复制到另一个。我不确定为什么它还会将图形上下文作为参数,因为副本的源可能已经被绘制或渲染。这种情况下这个参数有什么用呢?
值得注意的是,我对图形上下文的理解不是很好,但解释它们的资源并不多。我假设这是我对 xcb 内部情况的心理模型的问题。
【问题讨论】:
相关文档:https://www.x.org/releases/X11R7.6/doc/xproto/x11protocol.html#requests:CopyArea
文本描述包含以下内容(重点是我的,原来的重点和链接丢失了):
如果 dst-drawable 是一个具有非无背景背景的窗口,则这些对应的目标区域将使用该背景平铺(所有平面掩码和复制功能)。无论平铺以及目标是窗口还是像素图,如果 graphics-exposures in gc 为 True,则生成所有相应目标区域的 GraphicsExposure 事件。
所以,我的理解是:GC是用来绘制窗口的背景的,这也是它的大部分属性都用到的地方。
文档明确说明使用了哪些 GC 组件:
GC 组件:函数、平面掩码、子窗口模式、图形曝光、clip-x-origin、clip-y-origin、clip-mask
function 和plane-mask 指定了源和目标是如何“组合”的。所以,CopyArea 不仅可以复制,还可以做所有其他(奇怪的)GC 可以做的事情。subwindow-mode 说明子窗口会发生什么。可以将它们剪掉或画在上面。graphics-exposures 是关于响应绘图而生成的事件clip-x-origin、clip-y-origin 和 clip-mask 显然是关于剪裁图纸。【讨论】: