Delphi Flicker Free with appearence
如果我创建一个带有绘制框和滚动条的简单应用程序,在绘制框中绘制一些矩形,并更改滚动条以刷新绘制框,则拖动滚动条(在表单上设置DoubleBuffer):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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; |
如果我随后将外观更改为Carbon,则闪烁返回:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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. |
那么我该如何使用外观而不出现闪烁?在主窗口上设置的双缓冲区不会停止闪烁。
将