我注意到一些使用clDefault颜色的异常行为.
clDefault = TColor($20000000); //536870912
Run Code Online (Sandbox Code Playgroud)
作为一个例子(http://wiki.freepascal.org/Colors):
- 将它用于Brush将使用目标DC(设备上下文)的普通背景画笔.
在Form的画布上,FillRect将绘制一个填充了标准窗口的正常背景的矩形区域.这是widgetset和主题定义的任何内容.这可能是灰色或渐变或图片.
在TListBox的Canvas上使用clDefault将使用正常背景绘制,在Windows上通常为白色.因此在TListBox中,clDefault与clWindow相同.
将其用作笔颜色将使用设备上下文的默认线条颜色.
将其用作字体颜色将使用设备上下文的普通文本颜色.
有人能告诉我它有多clDefault有用吗?
我的意思是,它是由操作系统还是VCL代码解释的,如何解释?
您提供了FPC文档的链接,然后讨论VCL并标记Delphi问题.我将假设您询问Delphi VCL并忽略不适用的链接文档.
在VCL中,对于笔,字体和画笔,默认颜色为黑色.那是因为$20000000R,G和B通道有0.$20对于像,等等方法LineTo,alpha通道肯定会被忽略,但这FillRect与您链接的FPC文档完全不同.
如果你使用clDefault了Color的TListBox,那么它会再次被黑.同样,与您链接的FPC文档不同.
当然,这个价值$20000000对GDI没有特别的意义.对于笔,字体,画笔等,该值传递给GDI,后者将其解释为黑色.
如果您研究VCL源代码,您会发现使用的各种地方clDefault.主要clDefault用作哨兵值.VCL代码检查指定的颜色属性是否等于clDefault,然后采取特殊操作.
据我所知,这就是它的全部内容.VCL的某些部分clDefault视为哨兵,否则为黑色.
| 归档时间: |
|
| 查看次数: |
256 次 |
| 最近记录: |