我现在从C开始一个项目,使用Minix,我想创建一个RGB()函数,我应该在0到255之间给出三个数字作为参数,它返回一种颜色。
#define BLACK rgb(0,0,0)
#define BLUE rgb(0,0,255)
#define CYAN rgb(0,255,255)
我有什么想法可以做到吗?
干杯
答案 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
转换为十六进制代码。
感谢您的帮助,我几乎得到了您的帮助。非常感谢。