程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> WIN32中顏色值與.NET中顏色值(Color)的轉換

WIN32中顏色值與.NET中顏色值(Color)的轉換

編輯:關於C語言

如果使用MFC與.NET混合編程,就會遇到這個問題,通過MFC編寫的控件,由.Net調用,則控件中背景色的設置,需要顏色的轉換。

如果使用MFC與.NET混合編程,就會遇到這個問題,通過MFC編寫的控件,由.Net調用,則控件中背景色的設置,需要顏色的轉換。
COLORREF類型顏色的值COLORREF cr=RGB(123,200,12);
其中的R、G、B三個分量的排列順序是BGR。
.Net中通過數據類型Color表示顏色,該類有一個函數FromArgb(int,int,int),可以通過輸入RGB三個值得到一個Color類型的顏色。同時也有一個ToArgb()函數,得到一個32位的整數值,
32 位 ARGB 值的字節順序為 AARRGGBB。由 AA 表示的最高有效字節 (MSB) 是 alpha 分量值。分別由 RR、GG 和 BB 表示的第二、第三和第四個字節分別為紅色、綠色和藍色顏色分量 了解了上面的內容,顏色的轉換就很簡單了。
1、從Color到COLORREF
int nColor = crColor.ToArgb();
int blue = nColor & 255;
int green = nColor >> 8 & 255;
int red = nColor >> 16 & 255;

//注意COLORREF中顏色的排列是 BGR,而通過Color.ToArgb()得到的數值中顏色排列是AARRGGBB
int nColorRef = blue << 16 | green << 8 | red;
2、從COLORREF到Color(注意COLORREF中顏色的排列是BGR,紅色分量在最後面)
int red=nColorRef & 255;
int green= nColorRef >> 8 & 255;
int blue= nColor Ref>> 16 & 255;
Color crColor=Color.FromArgb(red,green,blue);
或者直接通過下面的代碼:
Color.FromArgb(nColorRef & 255, nColorRef >> 8 & 255, nColor Ref>> 16 & 255);
注:上面的代碼使用C#編寫。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved