【问题标题】:xcb library: how to draw in coloursxcb 库:如何绘制颜色
【发布时间】:2016-12-22 08:54:49
【问题描述】:

我正在创建必须在多个图形窗口中以多种颜色绘制线条和符号的 C 代码。咨询 www 我了解到我需要使用颜色图,但是我无法让它们工作。 我发现的大多数代码都是关于创建和填充新的颜色图,但是我只需要少数颜色(黄色、红色、洋红色……),所以我认为默认的地图就足够了。 如何读取默认颜色图 screen->default_colormap 中可用的颜色? 有人能指出一个创建窗口及其图形上下文的基本示例,然后在其中绘制(比如说)一个绿色圆圈或一个蓝色正方形吗?

【问题讨论】:

    标签: colors xcb


    【解决方案1】:

    以下代码是从我正在处理的项目中提取的几行代码,我在其中绘制了很多颜色。它对我有用 - 我并不是说这是最好的,甚至是非常好的方法,但我只是一个试图自学的爱好者,在我发现的稀疏示例中,这就是我拼凑起来的。

    check this manpage for: xcb_change_gc(etc.,);

    我实际上保留了一个简单的 rgb 值数组,存储的是 uint32_ts,我用它来绘制。因为我只是为了自己的满足而编程,我不知道这是否非常便携。此外,还需要进行一些实验才能发现颜色的编码。我确定这取决于硬件。我认为颜色图的优势在于它们是可移植的,如果您没有真彩色,颜色图将帮助您使用正确的颜色进行绘制。我个人不需要知道。我只是喜欢使用像素或填充矩形来探索一些数学。

    uint32_t    rgb = 0xFFFFFFFF; // white on my system
    
    uint32_t    mask = XCB_GC_FOREGROUND,
                foreground_value = rgb;
    
    xcb_gcontext_t gc;
    
    gc = xcb_generate_id(connection);
    xcb_create_gc (connection, gc, drawing_buffer_pixmap, mask, &foreground_value);
    
    // below, the color of the gc is changed rather than making a new one
    
    xcb_change_gc(connection, *gc, mask, &foreground_value);
    

    【讨论】:

      猜你喜欢
      • 2019-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-26
      • 1970-01-01
      • 1970-01-01
      • 2020-12-22
      • 2020-02-20
      相关资源
      最近更新 更多