AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit PaintBox und Label

Ein Thema von iphi · begonnen am 15. Dez 2011 · letzter Beitrag vom 15. Dez 2011
Antwort Antwort
Seite 1 von 2  1 2      
iphi

Registriert seit: 13. Feb 2009
262 Beiträge
 
Delphi 7 Personal
 
#1

Problem mit PaintBox und Label

  Alt 15. Dez 2011, 09:09
Delphi-Version: 5
Hallo,

Ich habe auf meinem Main Form eine Paintbox, in der eine Grafik erstellt wird, und ein Label.
Mit PaintBox.Repaint löse ich den OnPaint Event der Paintbox aus, der in der Paintbox eine Grafik erstellt.

Wenn ich das Label ändere, wird allerdings auch der OnPaint-Event der PaintBox ausgelöst, was ich nicht möchte, da das Zeichnen sehr rechenaufwändig ist.

Gibt es eine Möglichkeit, das Label zu ändern ohne die Paintbox neu malen zu müssen oder das Label gleichzeitig mit dem Malen zu ändern, so dass nur einmal gemalt wird?
Ich habe versucht, das Label in der OnPaint-Serviceroutine zu ändern. Dies löst den OnPaint Event aber trotzdem ein zweites Mal aus.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Problem mit PaintBox und Label

  Alt 15. Dez 2011, 09:17
Mit senden einer WM_SETREDRAW wäre das möglich.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#3

AW: Problem mit PaintBox und Label

  Alt 15. Dez 2011, 09:23
Es wird nicht das Event der Paintbox ausgelöst ... es gibt nur ein Event.

TPaintBox und TLabel haben keine eigenen Canvas, sondern zeichnen sich auf dem ihres des Parent.

Ein Repaint-Befehl an das Label geht also an den Parent, vorallem wenn das Label transparent ist, denn dann muß sich der Parent ja auch neu zeichnen
und wenn sich der Parent neu zeichnet, dann ist auch die Paintbox betroffen.

Man könnte höchstens die Region eingrenzen, aber dann müssen die Zeichenroutinen diese Angabe auch selber auswerten.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: Problem mit PaintBox und Label

  Alt 15. Dez 2011, 10:22
wenn es so aufwändig zu berechnen ist dam male doch in ein Bitmap wenn nötig und lass die Paintbox das Bitmap malen im OnPaint.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
iphi

Registriert seit: 13. Feb 2009
262 Beiträge
 
Delphi 7 Personal
 
#5

AW: Problem mit PaintBox und Label

  Alt 15. Dez 2011, 15:45
Das kanns doch nicht sein. Wenn ich 10 Labels und eine komplexe Grafik update, dann muss ich die Grafik insgesamt 11 mal updaten.
Selbst ein Bitmap umkopieren kostet Zeit.

Gibt es denn keine Möglichkeit, den Repaint beim Ändern der Labels zu unterdrücken und erst zum Schluss beim Aufbau der Grafik einen Repaint zu machen?
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: Problem mit PaintBox und Label

  Alt 15. Dez 2011, 15:49
dreckig ? LockWindowUpdate(handle) ...
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#7

AW: Problem mit PaintBox und Label

  Alt 15. Dez 2011, 15:54
Zu bemerken ist aber noch, dass das locken beim unlocken für ein refresh sorgt
Nicht dass sich später jemand wundert.
(Auch schön wen man damit den ganzen desktop lockt und endlockt )


MFG
Memnarch
Da man Trunc nicht auf einen Integer anwenden kann, muss dieser zuerst in eine Float kopiert werden
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#8

AW: Problem mit PaintBox und Label

  Alt 15. Dez 2011, 16:15
Mit PaintBox.Repaint löse ich den OnPaint Event der Paintbox aus, der in der Paintbox eine Grafik erstellt.
Reicht nicht PaintBox.Invalidate? Das wäre schonmal ressourcenschonender, weil nicht zwangsweise sofort alles neu gezeichnet wird.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#9

AW: Problem mit PaintBox und Label

  Alt 15. Dez 2011, 16:17
sauber ist eine Implementierung in dieser Art (reines Testprojekt 6 Labels auf dem Form)
Delphi-Quellcode:
procedure TForm2.Timer1Timer(Sender: TObject);
begin
   if Timer1.Tag > 6 then
      begin
        Timer1.Enabled := false;
        SendMessage(handle,WM_SETREDRAW,-1,0) ;
        RedrawWindow(handle, 0, 0, RDW_ERASE or RDW_FRAME or RDW_INVALIDATE or RDW_ALLCHILDREN);
      end
   else
      begin
        SendMessage(handle,WM_SETREDRAW,0,0);
        Timer1.Tag := Timer1.Tag + 1;
        TLabel(FindComponent('Label' + IntToStr(Timer1.Tag))).Caption := FormatDateTime('ss:zzz',now);
      end;
end;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Problem mit PaintBox und Label

  Alt 15. Dez 2011, 16:48
Zu bemerken ist aber noch, dass das locken beim unlocken für ein refresh sorgt
Und dieser Refresh wirkt dann auch noch auf dem gesamten Desktop - Unter XP sorgt das für eine schöne Flackerorgie ...
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:36 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