hallo,
ich hab hier ein code-beispiel, dass ihr einfach in eine unit1
kopieren müsst, damit es läuft. es werden keine komponenten
auf der form benötigt.
das problem ist folgendes: bei diesem beispiel-programm flimmert
meine maus, wenn ich sie auf der form herumschiebe. das sieht
unschön aus. wisst ihr, wie man das beseitigen kann?
doublebuffered hab ich schon probiert.
und ich hab in "ApplicationIdle" die variable "Done" deshalb nicht
auf "False" gesetzt, weil die maus sonst die ganze zeit flimmert, auch
wenn ich sie nicht bewege, ihr könnt das ja mal ausprobieren.
vielen dank schonmal.
hier ist der code:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;
type TForm1 = class(TForm) procedure FormShow(Sender: TObject); procedure ApplicationIdle(Sender: TObject; var Done: Boolean); procedure FormClose(Sender: TObject; var Action: TCloseAction); private FBmp: TBitmap; public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormShow(Sender: TObject); begin
WindowState := wsMaximized;
FBmp := TBitmap.Create; FBmp.Width := ClientWidth; FBmp.Height := ClientHeight;
Application.OnIdle := ApplicationIdle;
end;
procedure TForm1.ApplicationIdle(Sender: TObject; var Done: Boolean); begin
FBmp.Canvas.Brush.Color := clGreen; FBmp.Canvas.FillRect(Rect(0, 0, FBmp.Width - 1, FBmp.Height - 1));
FBmp.Canvas.Pen.Color := clMaroon; FBmp.Canvas.Pen.Width := 3; FBmp.Canvas.Ellipse(20, 20, 100, 100);
BitBlt(Canvas.Handle, 0, 0, FBmp.Width, FBmp.Height, FBmp.Canvas.Handle, 0, 0, SRCCOPY);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin
FBmp.Free;
end;
end. |