![]() |
"anzeigeunterbrechung" in paintbox verbessern?!?
hallo,
hab folgendes problem: in einer paintbox wird alle 33ms eine zeichnung aktuallisiert. allerdings wird die darstellung kurz unterbrochen, wenn ich z.b. auf die titelleiste klicke (und drauf bleibe). wie kann ich das verhindern? --> soll ich was anderes als paintbox verwenden (image dauert von haus aus zu lang beim zeichnen (33ms)) --> hab jetzt schon die timer-komponente ersetzt durch die tmmtimer-komponente, die im delphi 6 kochbuch beschrieben wird (soll angeblich viel genauer sein...) --> ist da vielleicht n thread angebracht (wüsste nicht wie ;-)) naja, vielleicht hat ja noch jemand andere vorschläge mfg heiopei |
Re: "anzeigeunterbrechung" in paintbox verbessern?
hi,
wenn du dein form verschieben willst, wird alles kurzzeitig aussetzen (innerhalb des prozesses). da hilft eben nur ein zweiter thread. aber ich glaube, dass du selbst dann noch den "fehler" bemerken wirst, da das zeichnen ja so oder so kurzzeitig unterbrochen wird. aenogym |
Re: "anzeigeunterbrechung" in paintbox verbessern?
und wie soll ich dann den zweiten thread erstellen können (muss ja ne schleife sein, bzw. n eigener thread für den timer)?
hab so was noch nie gemacht! mfg heiopei |
Re: "anzeigeunterbrechung" in paintbox verbessern?
Delphi-Quellcode:
So könnte ich mir das Vorstellen. Bin mir aber nicht 100 % sicher.
type
TForm1 = class(TForm) ... TDingsThread = class(TThread) private FParameter: Integer; protected procedure Execute; override; public constructor Create(Parameter: Integer); end; var Form1: TForm1; MyDings: TDingsThread; implementation {$R *.dfm} constructor TDingsThread.Create(Parameter: Integer); begin inherited Create(true); // Create thread as suspended FreeOnTerminate := True; // Yes Priority := tpNormal; // the priority FParameter := Parameter; Resume; // Start the thread end; procedure TDingsThread.Execute; begin // Irgendetwas := //Parameter; while not Terminated do begin With Form1.PaintBox1 do begin Canvas.Lock; Canvas.Pen.Color := RGB(Random(255), Random(255), Random(255)); Canvas.Brush.Color := RGB(Random(255), Random(255), Random(255)); Canvas.Ellipse(Random(Width), Random(Height), Random(Width), Random(Height)); Canvas.Unlock; end; if not Terminated then Sleep(33); end; end; // ---------------------------------------------------------------------- procedure TForm1.FormCreate(Sender: TObject); begin MyDings := TDingsThread.Create(0); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz