给delphi点颜色看看
想给程序加一个改变字体颜色的功能,于是弄了三个轨迹条,分别调整 RGB的值,写程序的时候才想起来不知道谁应该排在前面,于是打开PS
http://cache.amobbs.com/bbs_upload782111/files_9/ourdev_247924.JPG
(原文件名:cl2.JPG)
恩,就应该是RGB的顺序,但是运行程序发现R和B反了,于是按住Ctrl,点程序里的clred
http://cache.amobbs.com/bbs_upload782111/files_9/ourdev_247927.JPG
(原文件名:cl1.JPG)
晕,两者的定义竟然不一样 高低位整反了吧? delphi 颜色是反过来的
你可以使用RGB($FF,$00,$00)函数,定义颜色。
在RGB原型中,
function RGB(r, g, b: Byte): COLORREF;
begin
Result := (r or (g shl 8) or (b shl 16));
end;
你也可以看到,是SHL左移操作。 这不叫“Delphi里RGB是反的”,而是Photoshop采用的表示法对于PC来说RGB是反的。当然“对于PC来说”并不是相对于68K之类的big-endian系统而言,而是对于网络传输而言。考虑一下为什么Windows提供了一组ntoh/hton(net to host / host to net)的API就知道了。
Windows系统的颜色表示方法就是R在低字节,B在高字节;显卡的VRAM里(这里只说主显存)也是BGR的顺序。至于纹理显存,大多情况下是ABGR,虽然绝大多数显卡也能支持ARGB之类的格式,但很少有程序会这样用。 记号 up
页:
[1]