我現在開始在C項目,使用Minix和我想創建一個RGB()函數,我應該給作爲參數0和255之間的三個數字,它返回一種顏色。RBG C顏色發生器
#define BLACK rgb(0,0,0)
#define BLUE rgb(0,0,255)
#define CYAN rgb(0,255,255)
任何想法我能做到嗎?
乾杯
我現在開始在C項目,使用Minix和我想創建一個RGB()函數,我應該給作爲參數0和255之間的三個數字,它返回一種顏色。RBG C顏色發生器
#define BLACK rgb(0,0,0)
#define BLUE rgb(0,0,255)
#define CYAN rgb(0,255,255)
任何想法我能做到嗎?
乾杯
是你的顏色由任何一個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
在技術上更好。
入住此BTW: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
轉換爲十六進制代碼。
感謝您的幫助,我幾乎在您的幫助下獲得了幫助。非常感激。
你可能會把它分成兩部分:預處理宏可以將三個十進制值轉換成單個32位值。但是,那麼您需要像'sprintf'這樣的實際運行時代碼將該值轉換爲文本十六進制代碼。 – 2014-11-24 20:34:43
我該怎麼做? :\ – Verance 2014-11-24 20:53:16
從我可以看到谷歌,功能'vg_set_pixel'不需要一個十六進制代碼的顏色,它需要一個無符號整數。不幸的是,我發現的文檔中沒有關於該int格式的信息,所以你必須找到一些更好的文檔。 – 2014-11-24 21:01:27
你做了什麼?舉個例子說明你想要什麼? – smttsp 2014-11-24 18:48:40
您是否知道採用RGB - >單色的公式? – 2014-11-24 18:49:01
'返回一種顏色'是什麼意思?你有什麼想返回 – 2014-11-24 18:50:59