• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

delphi获取颜色值的RGB

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

前言:http://www.cnblogs.com/studypanp/p/5002953.html 获取的颜色值

前面获取到一个像素点的颜色值后(十六进制),比如说(黄色):FFD1C04C(共八位),我自认为前面两位代表透明度,其它顺序为R-G-B, 没想到顺序是G-B-R

下面为从十六进制解析RGB的函数:(这里是把FF当成了R)

function TForm2.HexColorToRGB(s: string): string;    // 传进来的是颜色值
var
  i: Integer;
   R,G,B: Byte;
begin
  i := s.ToInteger;
  R := i and $FF;
  G := (i shr 8) and $FF;
  B := (i shr 16) and $FF;
// Result := Format('%.2x,%.2x,%.2x',[R,G,B]);            // 返回十六进制的RGB
  Result := Format('%.2d,%.2d,%.2d',[R,G,B]);    	  // 返回RGB: 76,192,209
end;
 

我在画图上的颜色编辑器上输入R:76, G:192,B:209,画布上面显示的是蓝色,我又郁闷...

后来我把这三个数打错顺序输入,结果发现192,209,76才是原来的颜色,位数不是按RGB的顺序,而是按BRG的顺序,郁闷死我了

至少我在XE中结果是这样的。

function TForm2.HexColorToRGB(s: string): string;    // 传进来的是颜色值
var
	i: Integer;
  R,G,B: Byte;
begin
	i := s.ToInteger;
	B := i and $FF;
	R := (i shr 8) and $FF;
	G := (i shr 16) and $FF;
//	Result := Format('%.2x,%.2x,%.2x',[R,G,B]);    // 返回十六进制的RGB
	Result := Format('%.2d,%.2d,%.2d',[R,G,B]);    	// 返回RGB 192,209,76
end;

 

 所以需要把原来函数的顺序变一下。

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
VS2010+MATLAB2010b运行TLD发布时间:2022-07-18
下一篇:
Matlab图窗复制后visio中不能取消组合发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap