rgb(r,g,b)是乙個巨集
實際上它做得事是((colorref)(((byte)(r)|((word)((byte)(g))<<8))|(((dword)(byte)(b))<<16)))
rgb(r,g,b) = 乙個整型值 = r + g * 256 + b*255*256
colorref 是 一 個 32-bit 整 型 數 值,它 代 表 了 一 種 顏 色。你 可以 使 用 rgb 函 數 來 初 始 化 colorref
typedef dword colorref;
colorref變數有兩種賦值方法
第一種
colorref cf = rgb(,,);
第二種
ccolordialog colordialog;
colorref color;
if( colordialog.domodal() == idok )
這 段 代 碼 使 用 了 mfc 中 的 顏 色 對 話 框
如何從 colorref中取出rgb分量值?
可以使用巨集getrvalue
getgvalue
getbvalue
他們的定義如下
#define getrvalue(rgb) ((byte)(rgb))
#define getgvalue(rgb) ((byte)(((word)(rgb)) >> 8))
#define getbvalue(rgb) ((byte)((rgb)>>16))
實際的軟體開發過程中,常需要用到非.net平台的**。這時候就可能碰到colorref(也就是以int型別代表的顏色值或是以dword值表示的顏色)。這跟.net平台下的顏色的相互轉換ms並沒有直接實現。那麼就需要我們自己處理了。這裡給出兩個函式。
uint getcustomcolor(color color)
color getargbcolor(int
color)
注:colorref中顏色的排列是bgr,而通過color.toargb()得到的數值中顏色排列是aarrggbb
ccolordialog dlg;
if(dlg.domodal() == idok)
一、格式化字串的功能很強大
int ired = getrvalue(pmarkinfo->lfcolor);
int igreen = getgvalue(pmarkinfo->lfcolor);
int iblue = getbvalue(pmarkinfo->lfcolor);
cstring szcolor;
szcolor.format(_t("#%02x%02x%02x"), ired, igreen, iblue);
//////
//////
//////
//////
//////
//////
//////
//////
/////
cstring m_backcolor.m_frame_color = "#0290d8";
dword r,g,b;
sscanf(m_backcolor.m_frame_color,"#%2x%2x%2x",&r,&g,&b);
colorref rgb = rgb(r,g,b);
brush.createsolidbrush (rgb)
//////
//////
//////
//////
//////
//////
//////
////////
//colorref轉換為字串
bool cdatamanager::getrgbtext(std::string &strrgbtext , colorref color)
//字串轉換為colorref,如("32","34","21")
bool cdatamanager::getcolorrgb(cstring strcolortext , colorref& color)
RGB與HSI空間相互轉換
void hsitrans char tp else else if mn r else if mn g myhsiarray i mypwidth j h calchue angle,col1,col2,mn myhsiarray i mypwidth j s 255.0 float mx mn ...
關於COLORREF與RGBQUAD的顏色轉換問題
觀察以下 colorref rgb pdc getbkcolor byte r,g,b r getrvalue rgb g getgvalue rgb b getbvalue rgb colorref的儲存為 0x00bbggrr,即r在低位。在小端儲存模式中,低位址存放低位資料,高位址存放高位資料...
YUV 格式與 RGB 格式的相互轉換公式
cr vcb u 0.257r 0.504g 0.098b 160.439r 0.368g 0.071b 128 0.148r 0.291g 0.439b 128y 0.257r 0.504g 0.098b 16cr v 0.439r 0.368g 0.071b 128cb u 0.148r 0.2...