zoukankan      html  css  js  c++  java
  • delphi 获取颜色值的RGB

    前言: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;
    

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

  • 相关阅读:
    VC++导入导出类
    SVN操作手册
    stdcall与cdecl的区别
    VC++编译MPIR 2.7.0
    zabbix 监控 WEB 应用性能
    zabbix 常用监控模板
    zabbix 自定义 windows 监控项
    zabbix 自定义 nginx 监控模板
    zabbix agent 自定义 UserParameter
    zabbix python 微信告警脚本
  • 原文地址:https://www.cnblogs.com/studypanp/p/5003036.html
Copyright © 2011-2022 走看看