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 完成它的工作。