Einzelnen Beitrag anzeigen

krueemel

Registriert seit: 18. Sep 2007
15 Beiträge
 
#1

Flackern beim Zeichnen auf Desktop

  Alt 20. Sep 2007, 11:02
hallo,

ich habe folgenden Code:
Delphi-Quellcode:
procedure TForm1.Timer2Timer(Sender: TObject);
var
  DesktopDC: HDC;
  DesktopCanvas: TControlCanvas;
mi,mj:integer;
k:real;
begin
if Timer2.Interval = 1 then timer2.Interval := 20;
mbla := mbla+1;
mj := trunc(sin((mbla / 180) * Pi)*500+500);
Label5.Caption:=IntToStr(mbla);
Label6.Caption:=FloatToStr(mj);


 //bildschirm refreshen, verantwortlich fürs flackern

  randomize;
  DesktopDC := GetDC(0);
  if DesktopDC = 0 then
  begin
    //Hier Fehlerbehandlung einfügen
  end
  else
  try
    DesktopCanvas := TControlCanvas.Create;
    try
      DesktopCanvas.Handle := DesktopDC;
          DesktopCanvas.Brush.Style := bsSolid;
          DesktopCanvas.Brush.Color:=RGB(255,0,50);
          DesktopCanvas.Pen.Color:=RGB(255,0,50);
          DesktopCanvas.Ellipse(0,0,mj,mj);
    finally
      DesktopCanvas.Free;
    end;
  finally
    ReleaseDC(0, DesktopDC);
  end;


end;

procedure TForm1.Button11Click(Sender: TObject);
begin
Timer2.Enabled := true;
mbla:=0; // golbal definiert

end;
Der Code erzeugt einen roten Kreis, der immer größer wird.
Doch leider flackert das Bild ganz schön dolle.
Vermutlich ist dies dran schuld:
Zitat:
RedrawWindow(0, nil, 0, RDW_UPDATENOW or RDW_ALLCHILDREN or RDW_INVALIDATE or RDW_ERASE or RDW_INTERNALPAINT);
gibt es eine bessere Lösung?


Vielen Dank
  Mit Zitat antworten Zitat