![]() |
Komponente nicht so oft malen
Hi,
Also ich bin gerade eine Komponente am machen und mein Problem ist das Windows ja nix besseres zu tun hat als mit WM_PAINT Messages umsich zu spammen -.-^^ Naja und da meine Komponente etwas Zeit zum malen braucht kommt sie teilweise nicht mehr hinterher.. Also in einem PC spiel würde man sagen es laggt :| Deswegen würde ich gerne das meine Komponente nur dann gezeichnet wird wenn ich es will. Ich habe mir zuerst gedacht das ich halt Paint nicht überschreibe sondern ne eigene Paint Methode schreibe und die dann zum malen aufrufe, aber das Problem ist ja das wenn nicht neu gemalt wird überhaupt nicht gemalt wird... Also man sieht nix weil Windows oder wer auch immer alles wegradiert und neumalt.. Aber ich will halt das Windows meine Kompo nicht wegradiert und nur neumalt wenn ich will! Versteht ihr ? :mrgreen: Gruß Neutral General |
Re: Komponente nicht so oft malen
Also windows sendet die wm_paint-messages ja auch nicht einfach so grundlos ... könnte es sein, dass deine paint-Routine eine auslöst, die dann wieder deine Paint-Routine auslöst, die dann wieder eine Message auslöst usw. ? Das würde da etwas erklären :stupid:
Und neuzeichnen kannst du dann über Invalidate oder so veranlassen ;) (Es wird eine wm_paint-Message gesendet :mrgreen: ) |
Re: Komponente nicht so oft malen
Delphi-Quellcode:
Zu viele Invalidate/Paints?
procedure TKeyboardTrainer.SetBevelLight(const Value: TColor);
begin FBevelLight := Value; Paint; Invalidate; end; procedure TKeyboardTrainer.SetBevelShadow(const Value: TColor); begin FBevelShadow := Value; Paint; Invalidate; end; procedure TKeyboardTrainer.SetFont(const Value: TFont); begin FFont.Assign(Value); Paint; Invalidate; end; ... etc |
Re: Komponente nicht so oft malen
So wie ich das sehe - ja. :mrgreen:
Eins von beiden sollte reichen, da sie ungefähr das gleiche machen ... ich weis nur nicht mehr genau, welches besser ist, aber ich glaube, das war Invalidate ... :gruebel: |
Re: Komponente nicht so oft malen
|
Re: Komponente nicht so oft malen
Ok ich hab das Problem behoben..
Es war besonders langsam wenn ich große Textdateien zu malen hatte :mrgreen: Jetzt male ich nur noch das was sichtbar ist :) Gruß Neutral General |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:46 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