gpt4 book ai didi

Delphi 外观无闪烁

转载 作者:行者123 更新时间:2023-12-03 15:47:43 25 4
gpt4 key购买 nike

如果我创建一个带有绘画框和滚动条的简单应用程序,在绘画框中绘制一些矩形,并使滚动条更改刷新绘画框,那么当我拖动滚动条时,我会得到无闪烁的显示(使用在表单上设置的 DoubleBuffer):

procedure TMainForm.OnHorzChange(Sender: TObject);
begin
PaintBox.Refresh;
end;

procedure TMainForm.OnPaint(Sender: TObject);
var
x, y: integer;

begin
with PaintBox.Canvas do
begin
Pen.Color := clBlack;
Brush.Color := clGray;
for y := 0 to 9 do
for x := 0 to 9 do
Rectangle(x * 32, y * 32, x * 32 + 24, y * 32 + 24);
end;
end;

如果我随后将外观更改为碳,闪烁就会恢复:

program test;

uses
Vcl.Forms,
main in 'main.pas' {MainForm},
Vcl.Themes,
Vcl.Styles;

{$R *.res}

begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
TStyleManager.TrySetStyle('Carbon');
Application.CreateForm(TMainForm, MainForm);
Application.Run;
end.

那么如何使用外观而不闪烁呢?主窗口上设置双缓冲区并不能阻止闪烁。

最佳答案

PaintBox 放在 TPanel 上,并将 Panel.ParentBackground 设置为 False。在这种情况下,它对我来说不会闪烁。

关于Delphi 外观无闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41416195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com