XCB库提供函数xcb_put_image
。该功能的签名是:
xcb_void_cookie_t xcb_put_image(
xcb_connection_t *conn,
uint8_t format,
xcb_drawable_t drawable,
xcb_gcontext_t gc,
uint16_t width, uint16_t height,
int16_t dst_x, int16_t dst_y,
uint8_t left_pad,
uint8_t depth,
uint32_t data_len, const uint8_t *data
)
该函数使用drawable
的像素颜色填充给定的data
(窗口/像素图)。 format
参数指定X服务器应如何解释给定数据。
format
的三个可能值之一是XCB_IMAGE_FORMAT_XY_PIXMAP,这意味着data
中包含的字节应该被解释为XY像素图(三个连续的“灰度”图像 - 每个RGB通道一个)。
这是我的问题:假设我想用黄色10x10矩形填充像素图,我想使用XY像素图格式。为此,我需要用data
字节填充data_len
。数组中字节的数量和值应该是多少?
答案 0 :(得分:0)
这取决于可绘制对象所使用的视觉效果。您并不是真的想了解有关视觉效果的所有详细信息,但是https://tronche.com/gui/x/xlib/window/visual-types.html是一个好的开始。
如果您可以随意使用字节序少的“健全” X11服务器,则您的视觉效果很可能是TrueColor类型,其中红色,绿色和蓝色只有一个字节。然后可以通过将红色和绿色完全混合而没有蓝色来产生黄色。
我不记得XYPixmap的定义,但是如果您是对的,那么这将需要200个字节(值255),然后是100个字节(值0)。 (在这种情况下,left_pad为零)。