我创建了一个基于TGraphicControl的控件,该控件是透明的,大部分为空白。它实际上在艺术线条中实现了一个简单的符号。
TLFMagicControl = class(TGraphicControl)

在我有的构造函数中:

ControlStyle := ControlStyle + [csOpaque];


然后,将我的“ TLFMagicControl”放置在我自己的面板上,该面板是TCustomControl。
即TLFGridPanel = class(TCustomControl)

TLFMagicControl的透明度可以完美地彼此交互,但不能与它们所在的父面板(TLFGridPanel)交互。

TLFGridPanel的大部分时间都花在黑色上,所以这不是问题,但是我希望用户能够打开/关闭面板上的网格线。当我覆盖绘画处理程序TLFGridPanel并绘制网格时,放在顶部的控件不是透明的,并会阻塞下面的网格线。

是否可以针对TCustomControl解决此问题,或者我为面板选择了错误的基础?

delphi - TCustomControl上的TGraphicControl透明度-LMLPHP

最佳答案

csOpaque告诉VCL,您完全是自己绘制控件,从而抑制了自动背景绘制(或擦除)。删除该控件样式以便让WM_ERASEBKGND起作用。

10-07 14:25