x11 相关问答¶
Picture 和 Pixmap有啥区别¶
Pixmap(像素图):它是一种用于存储图像数据的数据结构。它是一个二维像素数组,通常用于表示窗口的背景、图像、图标等。Pixmap 是基于像素级别的图像表示,可以通过像素操作来修改和绘制图像。Pixmap中的像素数据通常与显示设备的颜色深度和格式相匹配
Picture(图片):它是 XRender 扩展提供的一种高级图形对象。它是一个可渲染的图形对象,可以用于更复杂和高级的图像操作,如图像合成、阴影、透明度、颜色混合等。Picture 提供了对像素级别之上的渲染操作的支持,可以进行更精细的图像处理和效果,可以使用 XRender 提供的图像格式和属性,可以通过 XRender 函数进行进一步渲染和操作。
需要注意的是:
数据存储方式:Pixmap是像素级别的图像数组,直接存储图像数据;Picture是基于 XRender 扩展的高级图像对象,存储了更多的图像渲染相关信息。
功能和操作:Pixmap 主要用于基本的图像绘制和像素级别的操作,而 Picture 提供了更丰富和高级的图像操作功能,如:合成、阴影、透明度、颜色混合等。
渲染支持:Pixmap的渲染能力相对较弱,主要在像素级别进行操作;而 Picture 通过 XRender 扩展提供了更灵活和高级的图像渲染能力。
XSetLineAttributes¶
用于设置绘制直线时候的线条属性
函数原型:
int XSetLineAttributes(Display*, GC, unsigned int lineWidth, int lineStyle, int capStyle, int joinStyle);
lineWidth:线条宽度,以像素为单位
lineStyle:表示线条的样式,取值如下:
LineSolid:实线
LineOnOffDash:交替虚线
LineDoubleDash:双倍虚线
capStyle:表示线条的结尾样式,取值如下:
CapNotLast:直线的最后一个像素没有特殊处理
CapButt:直线的最后一个像素被截断
CapRound:直线的最后一个像素被圆角化
CapProjectiong:直线的最后一个像素被突出显示
joinStyle:表示线条的连接样式,取值如下:
JoinMiter:以尖角连接线条
JoinRound:以圆弧连接线条
JoinBevel:以斜角连接线条