2013-10-09 54 views
2

C++中是否存在與C++中的rgb宏等價的函數?我試圖將託管的C++文件轉換爲c#。 是否有解決getrvalue,getgvalue等方法?RGB宏c#相當於

回答

4

C++中的RGB宏將每個通道的字節作爲輸入。

C#具有同等功能:

Color.FromArgb(int alpha, int red, int green, int blue) 
Color.FromArgb(int red, int green int blue) 

您可以指定RGB或RGBA值。

+0

您是否引用了System.Drawing.dll? –

+0

修正了它。謝謝 –

0

您可以將它定義爲c#中的函數,因爲它相對容易。

((ushort)(((byte)(r) | ((ushort)((byte)(g)) << 8)) | (((uint)(byte)(b)) << 16))); 
+1

但是,Tyler,getrvalue和其他此類方法的解決方法呢? –

+1

你在跟自己說話嗎? –

+3

是的,但直到最後他才意識到它... – iamnotmaynard

1

這取決於你如何存儲的RGB數據,即32位,24位,16位,15位,12位等

您通常可以提取與位域在>>&運營商,像

int r = (color >> 16) & 0xFF; 

但這取決於顏色是如何定義的。

1

您可以使用Color結構。文檔MSDN

0

您可以使用System.Drawing.ColorTranslator來實例化一個Color對象,然後分別訪問其RGB性能。