AGB  ·  Datenschutz  ·  Impressum  







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

Flackern beim Neuzeichnen der Komponente

Ein Thema von daschaos · begonnen am 13. Jul 2007 · letzter Beitrag vom 13. Jul 2007
 
daschaos

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

Flackern beim Neuzeichnen der Komponente

  Alt 13. Jul 2007, 09:06
Hi!

Ich hab eine Komponente von TGraphicControl abgeleitet und möchte gerne meinen Zeichenvorgang ohne Flackern haben. Das Problem ist, dass TGraphicControl kein DoubleBuffered anbietet. Klar, die Form, also der Parent bietet mir das, das darf ich aber nich benutzen. Prinzipiell ist es ja kein Problem, dass dann quasi von Hand zu machen, dachte ich . Lege mir also immer ein global deklartiertes Bitmap am Anfang meiner Zeichenroutine an, dass ich jeweils mit der Größe meines zu zeichnenden Objekts initialisiere und auf dessen Canvas ich dann zeichnen lasse und am Ende über Canvas.Draw das Bitmap auf mein Canvas der Komponente zeichnen zu lassen. Funktioniert nur leider nich. Ich sehe zwar Teile davon, aber manches ist weiß überblendet. Meine Zeichneroutine ist vom Prinzip her folgendermaßen aufgebaut:

Delphi-Quellcode:
procedure PaintRect(ARect: TRect);
begin
  Bmp := TBitmap.Create;
  Bmp.Height := ARect.BottomRight.Y - ARect.TopLeft.Y;
  Bmp.Width := ARect.BottomRight.X - ARect.TopLeft.X;
  ...
  DrawOuterRect(ARect);
  Bmp.Free;
end;

procedure DrawOuterRect(ARect: TRect);
begin
  ...
  Bmp.Canvas.Rectangle(ARect);
  if(...) then
    DrawInnerRect(ARect)
  else
    DisplayRectProperties(ARect);
end;

procedure DrawInnerRect(ARect: TRect);
begin
  ...
  Bmp.Canvas.Rectangle(ARect);
  DisplayRectProperties(ARect);
end;

procedure DisplayRectProperties(ARect: TRect);
begin
  
  ...
  Canvas.Draw(ARect.TopLeft.X, ARect.TopLeft.Y, Bmp);
end;
Jetzt hab ich einfach jedes Vorkommen von Self.Canvas halt durch Bmp.Canvas ersetzt und eigentlich gehofft, es würde jetzt funktionieren.

Hab ich einen Denkfehler drin oder irgendwas übersehen, vergessen was ich noch machen müsste?
  Mit Zitat antworten Zitat
 


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:53 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 by Thomas Breitkreuz