在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
前言: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;
所以需要把原来函数的顺序变一下。
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论