阅读 107

DelphiX 中的颜色 问题

1,使用 DelphiX 7 的时候,颜色输出 不正常。

DXDraw1.Surface.Fill($FF0000) ,应该是红色,但是实际不是的,是蓝色。
这个参数 是 devcolor:integer 应该是个 32位的整数,

通过 D7 查到了 delphiX 中的颜色定义是 TRGBQuads

然后 看 delphiX的 HELP, TRGBQuads is arry 255 of TRGBQuad

然后 在 d7 里面看 TRGBQuad ,是在windows.pas 里面定义的,

PRGBQuad = ^TRGBQuad;
{$EXTERNALSYM tagRGBQUAD}
tagRGBQUAD = packed record
rgbBlue: Byte;
rgbGreen: Byte;
rgbRed: Byte;
rgbReserved: Byte;
end;
TRGBQuad = tagRGBQUAD;
{$EXTERNALSYM RGBQUAD}
RGBQUAD = tagRGBQUAD;

 

是一个 4字节的 record ,B G R 0

 

又为什么颜色不对呢?

难道是 DX7 对 这32位的 加载 顺序不一样?

但是我 将 这个顺序颠倒过来也不行。  0 R G B 

测试为

000000FF  为BLUE

0000FF00  为YELLOW

00FF0000  为BLACK

00FFFFFF 为WHITE

 

输入 定义的CLRED 不行,实际是蓝色,clbule 是黑色

万一 指出了 

绘图前经常要先用指定的颜色填充表面, 譬如: DXDraw1.Surface.Fill(颜色值);
这里的颜色格式和 Delphi 的不一样, 和 HTML 使用的颜色值的顺序是一样的, 譬如: $FF0000 表示红色.

估计是 版本的问题,他用的 2009

有个人回复 

使用Surface.ColorMatch()就可以把windows的RGB格式转换成Surface对应的颜色 

而且16位和24位颜色深度啥的都可以无视

 

 我来试试,

 

DXDraw1.Surface.fill( DXDraw1.Surface.ColorMatch(clred));

终于可以正常使用 颜色定义了。

 

原文:https://www.cnblogs.com/D7mir/p/15165699.html

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐