Entwickler-Ecke
Multimedia / Grafik - DoubleBuffered nützt nichts.
ShadowThief - Mi 03.12.03 10:52
Titel: DoubleBuffered nützt nichts.
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:
Delphi-Quelltext
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. |
ShadowThief - Mi 03.12.03 16:18
hats schon mal jemand probiert?
Anonymous - Mi 03.12.03 17:21
Welches OS hast du? Bei mir (WinXP) funzt das nämlich ohne Probleme. Vielleicht funtionierts ja mit Canvas.Draw?
ShadowThief - Mi 03.12.03 17:55
ich hab windows 2000 ...
das programm an sich funktioniert schon, nur die maus
flackert wie verrückt, zumindest, wenn ich die form maximiert
habe.
flimmert es bei dir nicht?
shadow.
ShadowThief - Mi 03.12.03 17:57
ich hab noch was vergessen:
wenn man den code in eine unit reinkopiert, dann muss noch
das onshow-ereignis gesetzt werden, es ist ja im code schon eine
behandlungs-routine da.
shadow.
Anonymous - Mi 03.12.03 18:35
Bei mir Flackert die Maus nie... Hast du es mal mit Canvas.Draw probiert? Vielleicht hilft das ja (auch wenn es keinen großen Unterschied macht=
ShadowThief - Mi 03.12.03 19:07
shit, ich bin grad unter winxp, da flackert die maus nicht,
aber unter win200 tut sie es. so ein mist.
woran könnte das jetzt liegen?
vielleicht irgendwelche windows-einstellungen?
shadow.
ShadowThief - Do 04.12.03 08:43
also ich habs rausgefunden. es liegt unter win2k am mauszeigerschatten,
wenn ich den ausschalte, dann flimmerts nicht.
unter winxp allerdings, flimmert es auch mit mauszeigerschatten nicht.
na das ist doch mal ne weiterentwicklung ...
shadow.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!