【问题标题】:X11 - put image in XY formatX11 - 以 XY 格式放置图像
【发布时间】:2018-03-07 19:59:35
【问题描述】:

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 )

该函数使用来自data 的像素颜色填充给定的drawable(窗口/像素图)。 format 参数指定 X 服务器应如何解释给定数据。

format 的三个可能值之一是 XCB_IMAGE_FORMAT_XY_PIXMAP,这意味着 data 中包含的字节应被解释为 XY 像素图(三个连续的“灰度”图像 - 每个 RGB 通道一个)。

这是我的问题:假设我想用黄色 10x10 矩形填充像素图,并且我想使用 XY 像素图格式。为此,我需要用data_len 字节填充data。数组中字节的个数和值应该是多少?

【问题讨论】:

    标签: x11 xorg xcb


    【解决方案1】:

    这取决于用于可绘制对象的视觉效果。您并不是真的想了解有关视觉效果的所有细节,但https://tronche.com/gui/x/xlib/window/visual-types.html 是一个好的开始。

    如果您可以随意假设具有小端字节顺序的“正常”X11 服务器,那么您的视觉对象很可能是 TrueColor 类型,其中一个字节用于红色、绿色和蓝色。然后可以通过混合全红色和绿色而不是蓝色来产生黄色。

    我不记得 XYPixmap 的定义,但如果你是对的,那么这需要 200 个字节,值为 255,然后是 100 个字节,值为 0。 (在这种情况下,left_pad 将为零)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-29
      • 2022-06-11
      • 1970-01-01
      • 2012-05-28
      • 2018-03-23
      相关资源
      最近更新 更多