max*_*fax 2 forms delphi transparency gradient frame
我有一个表单,并在Paint事件上使用渐变绘制它.我也在那张表格上有框架.我希望框架将是透明的,以查看窗体的渐变或使用渐变绘制帧,如果透明度不可用.
表格和框架一定不要闪烁:)
何去做?谢谢.
正如我所见,帧的透明度有些闪烁.因此,对我来说最好的解决方案是覆盖TFrame1.PaintWindow(DC:HDC)并使用渐变绘制框架的背景.
这里有一个获得框架透明度的技巧,如下所述:how-to-make-delphi-tframe-background-transparent.
type
TMyFrame = class(TFrame)
procedure CreateParams(var Params: TCreateParams);override;
procedure PaintWindow(DC: HDC); override;
public
constructor Create(AOwner:TComponent);override;
end;
constructor TMyFrame.Create(AOwner: TComponent);
begin
inherited;
Brush.Style := bsClear;
end;
procedure TMyFrame.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.ExStyle := Params.ExStyle or WS_EX_TRANSPARENT or WS_EX_COMPOSITED;
end;
procedure TMyFrame.PaintWindow(DC: HDC);
begin
// Do not remove this comment to keep transparancy
end;
Run Code Online (Sandbox Code Playgroud)
更新 :
David建议WS_EX_COMPOSITED在调整大小时添加样式以避免闪烁.这应该添加到所有控件.
| 归档时间: |
|
| 查看次数: |
3480 次 |
| 最近记录: |