【问题标题】:Draw with custom color without allocation with Xlib使用自定义颜色绘制而不使用 Xlib 分配
【发布时间】:2016-08-27 14:57:21
【问题描述】:

我为我正在处理的图形工具包项目编写了一个 X“屏幕驱动程序”。作为最后一步,我的工具包调用将相关数据绘制到屏幕的 Xlib 函数。

问题在于,在我的工具包中,颜色以 32 位长整数的形式表示和传递。我读过的所有关于 Xlib 的文档都使用 XAllocColor 来定义颜色图中的每种颜色。

问题是,与我的图形例程相比,XAllocColor 相当,我想避免分配使用的每种单一颜色(也因为我没有预先列出列表)。

如何在 Xlib 中绘制任意颜色的东西而不分配每个颜色?

【问题讨论】:

  • 记不清了,但可以使用 DirectColor 模式?
  • 据我所见,但我可能错了,DirectColor 是您无论如何都必须分配的颜色的表示。
  • 你说得对(我的记忆在这里失败了 - 20 年来没有 Xlib 编程),但它不是带有 TrueColor 的 24 位图模式吗? (或类似的东西)。我记得您可以管理帧缓冲区以注入 24 位(只要显示器能够)。
  • 感谢您的提示,但我真的找不到在代码中执行此操作的方法。我见过的每篇文档都使用 XAllocColor。
  • 您不必为 TrueColor、StaticColor 和 StaticGray 视觉效果分配颜色。最后两个现在应该相当罕见,不知道谁使用它们。 TrueColor 像素本身就是 RGB 值,如果您有 TrueColor,那么 0xRRGGBB 确实会按预期工作。对于 DirectColor 和 PseudoColor,使用 XAllocColorCells 或 XAllocColorPlanes 一次分配一组颜色,并使用 XStoreColors 存储实际像素值。灰度也一样(希望现在已经灭绝)。

标签: c graphics colors x11 xlib


【解决方案1】:

修改XColor.pixel属性,它是一个long类型,通常包含0xAARRGGBB中的颜色(32位RGB模式),但这取决于你在X服务器上使用的颜色模式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    相关资源
    最近更新 更多