从TColor对象中解析出红,绿,蓝的亮度

从TColor对象中解析出红,绿,蓝的亮度,第1张

从TColor对象中解析出红,绿,蓝的亮度,第2张

使用API函数GetRValue、GetBValue和GetGValue。下面是一个通过提取红、绿、蓝来改变窗口背景颜色的例子。(注意:在使用下面的示例代码之前,请将窗口的颜色设置为clBlue、clNavy或任何其他非系统颜色,如clBtnFace)

void _ _ fast call t form 1::button 1 click(to object * Sender)
{
BYTE nRed = getr value(Color);
BYTE nBlue = getb value(Color);
BYTE n green = GetGValue(Color);

nRed+= 10;
nBlue-= 10;
n green * = 1.05;
Color =(TColor) RGB(nRed,nGreen,n blue);
}
注意:Get系列函数返回0~255的亮度值。因为单个亮度值是一个字节,所以返回类型是BYTE。当您将亮度值设置为小于0或大于255时,RGB宏将截断冗余字节(仅取低8位)。

注意:从技术上讲,这三个Get函数实际上并不是函数,它们是C风格的宏。您可以在include \ win32 \ wingdi.h中看到它们的实现,使用宏的一个结果是函数不是类型安全的。您可以在没有任何警告的情况下将char *传递给宏。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 从TColor对象中解析出红,绿,蓝的亮度

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情