TCustomControl 上的 TGraphicControl 透明度
TGraphicControl transparency on a TCustomControl
我创建了一个基于 TGraphicControl 的控件,它是透明的并且大部分是空的 space。它实际上在艺术线条中实现了一个简单的符号。
即 TLFMagicControl = class(TGraphicControl)
在我的构造函数中:
ControlStyle := ControlStyle + [csOpaque];
然后我的 "TLFMagicControl" 被放置在我自己的面板上,它是一个 TCustomControl。
即 TLFGridPanel = class(TCustomControl)
TLFMagicControl 的透明度可以完美地相互交互,但不能与它们所在的父面板 (TLFGridPanel) 交互。
TLFGridPanel 大部分时间都是黑色的,所以这不是问题,但我希望用户能够在面板上打开 on/off 网格线。当我重写绘制处理程序 TLFGridPanel 并绘制我的网格时,放置在顶部的控件不透明并阻挡了下面的网格线。
对于 TCustomControl 是否有解决此问题的方法,或者我是否为我的面板选择了错误的基础?
csOpaque
告诉 VCL 你完全自己绘制控件,这会抑制自动背景绘制(或擦除)。删除该控件样式,以便让 WM_ERASEBKGND
完成它的工作。
我创建了一个基于 TGraphicControl 的控件,它是透明的并且大部分是空的 space。它实际上在艺术线条中实现了一个简单的符号。
即 TLFMagicControl = class(TGraphicControl)
在我的构造函数中:
ControlStyle := ControlStyle + [csOpaque];
然后我的 "TLFMagicControl" 被放置在我自己的面板上,它是一个 TCustomControl。 即 TLFGridPanel = class(TCustomControl)
TLFMagicControl 的透明度可以完美地相互交互,但不能与它们所在的父面板 (TLFGridPanel) 交互。
TLFGridPanel 大部分时间都是黑色的,所以这不是问题,但我希望用户能够在面板上打开 on/off 网格线。当我重写绘制处理程序 TLFGridPanel 并绘制我的网格时,放置在顶部的控件不透明并阻挡了下面的网格线。
对于 TCustomControl 是否有解决此问题的方法,或者我是否为我的面板选择了错误的基础?
csOpaque
告诉 VCL 你完全自己绘制控件,这会抑制自动背景绘制(或擦除)。删除该控件样式,以便让 WM_ERASEBKGND
完成它的工作。