什麼是在.NET中用數字表示顏色的最佳格式,以便我不必使用Color對象?現在我將顏色保存爲HTML表示,但爲了使用它,我必須將其解析出來。顏色的數字表示
我正在處理一個800x600的畫布,它爲每個像素存儲一個顏色值,我需要儘可能快地渲染顏色,而不會將我的應用程序膨脹到存儲500k +顏色對象。
什麼是在.NET中用數字表示顏色的最佳格式,以便我不必使用Color對象?現在我將顏色保存爲HTML表示,但爲了使用它,我必須將其解析出來。顏色的數字表示
我正在處理一個800x600的畫布,它爲每個像素存儲一個顏色值,我需要儘可能快地渲染顏色,而不會將我的應用程序膨脹到存儲500k +顏色對象。
您可以使用標準Int32來存儲顏色。
這是特別好的,因爲框架中的顏色類型直接通過Color.ToArgb()和Color.FromArgb()以及類似的方法支持此類型。
顏色是24位RGB或32位RGBA值 - 很容易在32位int中表示。 Color結構只是包裝這個以使訪問更加方便,但是如果你走低級(像素或調色板數據在一個位圖像素),就是這樣。
如果你存儲大陣的顏色,然後用位圖和簡單地設置/讀取您感興趣的位置的像素值。
顏色結構的一個實例只有4名成員(阿爾法,紅色,綠色,藍色),每種類型Byte
。因此,您可以使用32位整數來存儲每種顏色,但是如果有的話,您可能不知道您最終保存了多少內存...
當然,如果您不需要全部4個顏色通道,您可以使用較小的結構來存儲您需要的通道(EG,只需使用一個字節來存儲紅色),並節省一大片空間。
這是你需要的嗎?
你只需要爲了得到你的顏色使用Color.FromArgb()和Color.ToArgb()。
16位或32位顏色顯然可以存儲在任何16位或32位數據類型中。 – 2010-04-08 20:56:50