程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> 從TColor對象中解析出紅、綠、藍的亮度

從TColor對象中解析出紅、綠、藍的亮度

編輯:vc教程

使用API函數GetRValue,GetBValue及GetGValue。這裡有一個以析取紅綠藍來改變窗口背景色的例子。(注意:在使用下面的例子代碼前,請將窗口的Color設為clBlue,clNavy或其它任何一種非系統顏色,諸如clBtnFace)

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  BYTE nRed  = GetRValue(Color);
  BYTE nBlue = GetBValue(Color);
  BYTE nGreen = GetGValue(Color);
  nRed +=10;
  nBlue -=10;
  nGreen *= 1.05;
  Color =(TColor) RGB(nRed, nGreen, nBlue);
}

注意:Get系列函數返回一個0~255的亮度值。因為單個亮度值為一個字節所以返回類型為BYTE。當你把亮度值設為小於0或大於255時,RGB宏將截去多余的字節(它只取低8位) 。

注意:從技術上講,這三個Get函數實際上不是函數,它們是C風格的宏。你可以在Include\Win32\wingdi.h中看到它們的實現。使用宏的一個結果是:函數不是類型安全的。你可以將char *傳給宏而不會得到任何警告。

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