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