AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Komponente nicht so oft malen

Ein Thema von Neutral General · begonnen am 18. Aug 2006 · letzter Beitrag vom 18. Aug 2006
Antwort Antwort
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Komponente nicht so oft malen

  Alt 18. Aug 2006, 15:41
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 ?

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: Komponente nicht so oft malen

  Alt 18. Aug 2006, 15:47
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

Und neuzeichnen kannst du dann über Invalidate oder so veranlassen (Es wird eine wm_paint-Message gesendet )
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: Komponente nicht so oft malen

  Alt 18. Aug 2006, 15:49
Delphi-Quellcode:
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
Zu viele Invalidate/Paints?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#4

Re: Komponente nicht so oft malen

  Alt 18. Aug 2006, 15:52
So wie ich das sehe - ja.

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 ...
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Komponente nicht so oft malen

  Alt 18. Aug 2006, 15:56
Also ich nehme immer Delphi-Referenz durchsuchenRefresh oder Delphi-Referenz durchsuchenRepaint.

Ein Doublebuffered könnte noch nützlich sein.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: Komponente nicht so oft malen

  Alt 18. Aug 2006, 16:00
Ok ich hab das Problem behoben..
Es war besonders langsam wenn ich große Textdateien zu malen hatte
Jetzt male ich nur noch das was sichtbar ist

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz