2012-09-02 33 views
0

我擁有CMYK顏色值(0,0.58,1,0)。現在我必須使用C#將其轉換爲Integer等價物。我認爲可以使用Bitwise運算符,但不確定。將CMYK顏色值設置爲與其相等的整數

請幫助我如何實現相同。

謝謝, 爬完

+0

如果您只想將它​​們轉換爲int,則可以使用Convert.ToInt32方法。但那會讓你失去精確度。你有沒有想過把它們轉換成RGB色彩空間? – Legoless

+0

@Legoless不,我想我明白OP的想法,看看我的答案。 – 2012-09-02 07:50:36

回答

2

嘗試這種情況:

float c = 0.0; 
float y = 0.58; 
float m = 1.0; 
float k = 0.0; 

uint intColor = (uint)(c * 255) << 24; 
intColor += (uint)(y * 255) << 16; 
intColor += (uint)(m * 255) << 8; 
intColor += (uint)(k * 255) << 0; 

這裏intColor將是一個32位無符號整數,含有C,Y,M的字節值和顏色的K個分量, 分別。若要將整數轉換回組件,只需將所有操作及其順序顛倒:

float c = ((intColor & 0xFF000000) >> 24)/255.0f; 
float y = ((intColor & 0x00FF0000) >> 16)/255.0f; 
float m = ((intColor & 0x0000FF00) >> 8)/255.0f; 
float k = ((intColor & 0x000000FF) >> 0)/255.0f; 
+0

謝謝...你能告訴我如何從int轉換回CMYK等價物嗎? – user1641519

+0

@userXXX你不斷地提到這個「等價」......但它是什麼?你想要什麼,確切地說? – 2012-09-04 06:49:18

+0

你好,假設我有CMYK顏色值(0,0.58,1,0)現在我必須將它轉換爲Int,然後我將不得不從Int值中獲取CMYK值。在這裏,我需要從CMYK到Int的來回轉換,反之亦然。 CMYK代表顏色值,因此int也應該表示等值網顏色值。是的,我想要的。 – user1641519

相關問題