AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Manchmal Probleme beim Neuzeichnen meiner Komponente
Thema durchsuchen
Ansicht
Themen-Optionen

Manchmal Probleme beim Neuzeichnen meiner Komponente

Ein Thema von daschaos · begonnen am 8. Feb 2008 · letzter Beitrag vom 8. Feb 2008
Antwort Antwort
daschaos

Registriert seit: 23. Mai 2007
117 Beiträge
 
Delphi 2006 Professional
 
#1

Manchmal Probleme beim Neuzeichnen meiner Komponente

  Alt 8. Feb 2008, 08:22
Hallo,

hab folgendes Problem. ICh hab von TCustomPanel abgeleitet und nutze auch das OnPaint Event davon zum Neuzeichnen. Ich hab zusätzlich ein Flag IsDirty, welches mir angibt, ob die Ausgabe komplett neu berechnet werden muss oder ob ich lediglich mein DoubleBufferdBitmap zeichnen muss, weil sich nichts geändert hat an der Ausgabe, nur lediglich das Bild erneuert werden muss weil ein anderes Fenster über meine Komponente geschoben wurde. Das funktioniert auch meistens ganz gut, nur manchmal zeichnet er sich dann doch nich neu, z.B. wenn ich mir den Hint anzeigen lasse ist dieser Bereich dann ungültig. Hab irgendwie das Gefühl das OnPaint-Event wird manchmal nich ausgelöst....

Kann man da generell was zu sagen, was ich da für MAßnahmen treffen könnte?

Meine Paint-Prozedur sind ungefähr so aus:

Delphi-Quellcode:
procedure TCustomTreemapChart.Paint;
var
  OldCursor: TCursor;
begin
  if IsDirty then
  begin
    try
      OldCursor := Screen.Cursor;
      Screen.Cursor := crAppStart;

      FDoubleBufferedBitmap.Height := Width;
      FDoubleBufferedBitmap.Width := Height;

      DrawChart(FDoubleBufferedBitmap.Canvas, ClientRect);
      Canvas.Draw(0, 0, FDoubleBufferedBitmap);

      MakeDirty;
    finally
      Screen.Cursor := OldCursor;
    end;
  end//IsDirty
  else
    BitBlt(Canvas.Handle, 0, 0, Width, Height, FDoubleBufferedBitmap.Canvas.Handle, 0, 0, SRCCOPY);
end;
Für jeden Tip dankbar!

Liebe Grüße,
Laura
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Manchmal Probleme beim Neuzeichnen meiner Komponente

  Alt 8. Feb 2008, 09:21
Warum so kompliziert? Warum nutzt du nicht einfach Delphi-Referenz durchsuchenTCanvas.ClipRect, welches den dreckigen Bereich angibt. Mit diesem Rechteck kannst du zusamemn mit deinem Delphi-Referenz durchsuchenClientRect das Überschneidungsrechteck berechnen (MSDN-Library durchsuchenIntersectRect). Wenn die Funktion false zurück gibt, gibt es keine Überschneidung, also brauchst du dann gar nicht zu zeichnen. Im anderen Falle musst du nur noch das berechnete Rechteck in deinem Clientbereich malen.
  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 11:31 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