RBG C颜色发生器

时间:2014-11-24 18:47:27

标签: c colors

我现在从C开始一个项目,使用Minix,我想创建一个RGB()函数,我应该在0到255之间给出三个数字作为参数,它返回一种颜色。

#define BLACK rgb(0,0,0)
#define BLUE rgb(0,0,255)
#define CYAN rgb(0,255,255)

我有什么想法可以做到吗?

干杯

2 个答案:

答案 0 :(得分:1)

你的颜色是否是以下形式的32位无符号整数?

0x00RRGGBB

如果是这样的话:

unsigned long int
rgb (const unsigned char r, const unsigned char g, const unsigned char b)
{
    return (r<<16) | (g<<8) | b;
}

应该做的伎俩。如果您有BGR而不是RGB,请更改周围的移位。

unsigned long如上所述,但uint32_t技术上更好。

答案 1 :(得分:-1)

检查这个顺便说一下:http://i.stack.imgur.com/PzAWb.png

我不知道如何使用这个面具似乎更友好

对于那些抱怨我不清楚的人,我会尝试指出一点点。 想象一下,目前的目标是画一个正方形,我有这个功能:

int test_square(unsigned short x, unsigned short y, unsigned short size, unsigned long color) {
    vg_init(0x105);
    int i, j;
    for (i = x; i < x+size; i++) {
        for (j = y; j < y+size; j++) {
            vg_set_pixel(i, j, color);
        }
    }
    sleep(5);
    vg_exit();
}

然后简化一点,因为我很快就需要更多的东西来创建我自己的图形和东西,我想用他们的名字来调用颜色,以寻找每个该死的调色板时间。所以我想调用函数test_square,如下所示:

test_square(25,25,100,BLUE);

而不是:

// test_square(25,25,100,0x32);

为此我定义了一大堆宏,即:

#define BLACK rgb(0, 0, 0)
#define BLUE rgb(0, 0, 255)
#define CYAN rgb(0, 255, 255)
#define DARK_GRAY rgb(169, 169, 169)

需要一个rbg函数将0, 0, 255转换为十六进制代码。

感谢您的帮助,我几乎得到了您的帮助。非常感谢。