如何才能不让系统颜色与RGB之间转化后不失真呢?

cscentaur 2003-09-30 10:22:51
比如clBtnFace这个颜色,如果直接给Image1.Canvas.Brush.Color的话就可以真的画出这个颜色,但如果用(ColorToRGB() + GetRValue() + GetGValue() + GetBValue())或GetNearestColor,更或是RGB(GetRValue() + GetGValue() + GetBValue()),得到的值再给Image1.Canvas.Brush.Color的话就会失真了。请问要如何能得到RGB的颜色,并对它进行操作后,又能转化为原来的16位色或32位色从而不失真呢?
...全文
74 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sheepcyk 2003-10-01
  • 打赏
  • 举报
回复
不要用GetRValue,直接在rgb中写值
Eastunfail 2003-10-01
  • 打赏
  • 举报
回复
var originalColor:TColor;red,blue,green,reserved:byte;
originalColor:=ColorToRGB(Image1.Canvas.Brush.Color);
red:=GetRValue(originalColor);
blue:=GetBValue(originalColor);
green:=GetGValue(originalColor);
reserved:=Byte(DWORD(originalColor) shr 24);
................
Image1.Canvas.Brush.Color:=(RGB(red,Green,Blue) or (reserved shl 24));

没有测试
delphiseabird 2003-10-01
  • 打赏
  • 举报
回复
Image1.Canvas.Brush.Color:=RGB(,,);还有什么不能实现么?
wzds2000 2003-09-30
  • 打赏
  • 举报
回复
关注,顶。。。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧