最近在寫一個小軟體,是MFC結合DUILIB做的界面,我需要使用MFC的顏色選擇工具選擇顏色后傳給DUILIB控制元件讓其顯示,但是MFC的這個顏色值在在DUILIB中都無效,其中MFC獲取的顏色值是DWORD型別的。我直接用顏色提取工具提取直接傳AS十六進制的進去就會正常顯示,請問怎么將DWORD轉換成AS的,如紅色的十進制是255,AS=0xFFFF0000;
uj5u.com熱心網友回復:
COLORREF cf = RGB(,,) ?這個uj5u.com熱心網友回復:
不行誒;COLORREF cf=RGB(255,0,0),得cf=255,AS=0xFFFF0000,as的十進制是4294901760,所以這個值差的有點大,不知道怎么轉換
uj5u.com熱心網友回復:
看一下 純紅 純綠 純藍 的資料 有什么規律?uj5u.com熱心網友回復:
電腦記憶體或檔案內容或傳輸內容只是一個一維二進制位元組陣列及其對應的二進制地址;人腦才將電腦記憶體或檔案內容或傳輸內容中的這個一維二進制位元組陣列及其對應的二進制地址的某些部分看成是整數、有符號數/無符號數、浮點數、復數、英文字母、阿拉伯數字、中文/韓文/法文……字符/字串、匯編指令、函式、函式引數、堆、堆疊、陣列、指標、陣列指標、指標陣列、陣列的陣列、指標的指標、二維陣列、字符點陣、字符筆畫的坐標、黑白二值圖片、灰度圖片、彩色圖片、錄音、視頻、指紋資訊、身份證資訊……
uj5u.com熱心網友回復:
在duilib中, 顏色是有4個位元組表示的, 就是一個DWORD.windows中, 4個位元組分別表示: ARGB 也就是最高位是透明度, 然后是R,G,B三種顏色.
windows是小端的 ; 所以 你的AS = 0xFFFF0000 在記憶體中 B,G,R,A
所以可以這樣取得各種顏色的資料:
DWORD val = 0xFFFF0000
BYTE *clr = (BYTE*)&val;
b = clr[0];
g = clr[1];
r = clr[2];
a = clr[3];
uj5u.com熱心網友回復:
反過來封裝也是一樣的. 只是要注意透明度. 必須填寫成FF, 否則是全透明, 導致看不到顏色.COLORREF cf=RGB(255,0,0);
cf |= 0xFF000000;
這時, cf就是不透明紅色了.
uj5u.com熱心網友回復:
微軟顏色應該是高位元組不為0的時候,使用早期的微軟EGA顏色,(0-15)16色,如果是0,則是直接的顏色值
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/60994.html
標籤:HTML/XML
上一篇:為什么一直提示404 not
下一篇:整數陣列排序
