Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Flackern beim Zeichnen auf Desktop (https://www.delphipraxis.net/99972-flackern-beim-zeichnen-auf-desktop.html)

krueemel 20. Sep 2007 10:02


Flackern beim Zeichnen auf Desktop
 
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 :)

Tormentor32 20. Sep 2007 10:08

Re: Flackern beim Zeichnen auf Desktop
 
Naja du erstellst jedesmal alles wieder neu, merke dir doch einfach am Anfang die Sachen die du brauchst und gebe sie erst am Ende wieder frei!

Luckie 20. Sep 2007 10:11

Re: Flackern beim Zeichnen auf Desktop
 
Wenn du schon Crosspostings quer durch alle Delphi-Foren machst, dann verlinke sie zumindest auch:
http://www.delphi-forum.de/viewtopic.php?t=76519

krueemel 20. Sep 2007 10:14

Re: Flackern beim Zeichnen auf Desktop
 
Zitat:

Zitat von Tormentor32
Naja du erstellst jedesmal alles wieder neu, merke dir doch einfach am Anfang die Sachen die du brauchst und gebe sie erst am Ende wieder frei!

Aber wie macht man sowas, ich kenne nur die Funktion zum "neuzeichnen".


Zitat:

Zitat von Luckie
Wenn du schon Crosspostings quer durch alle Delphi-Foren machst, dann verlinke sie zumindest auch:
http://www.delphi-forum.de/viewtopic.php?t=76519

Naja Foren sind ja dazu da, um jemandem zu helfen.

Luckie 20. Sep 2007 10:33

Re: Flackern beim Zeichnen auf Desktop
 
Aber man braucht nicht die selbe Lösung drei mal in drei verschiedenen Foren durchkauen.

Tormentor32 20. Sep 2007 10:37

Re: Flackern beim Zeichnen auf Desktop
 
Zitat:

Zitat von krueemel
Zitat:

Zitat von Tormentor32
Naja du erstellst jedesmal alles wieder neu, merke dir doch einfach am Anfang die Sachen die du brauchst und gebe sie erst am Ende wieder frei!

Aber wie macht man sowas, ich kenne nur die Funktion zum "neuzeichnen".


Zitat:

Zitat von Luckie
Wenn du schon Crosspostings quer durch alle Delphi-Foren machst, dann verlinke sie zumindest auch:
http://www.delphi-forum.de/viewtopic.php?t=76519

Naja Foren sind ja dazu da, um jemandem zu helfen.

Ich will mir nicht anmaßen über dich zu urteilen, aber vielleicht solltest du, wenn du die Zeichenfunktionen kennenlernen willst erstmal auf ein TImage oder ein Form zeichnen, so als Übung.

Aber als Hinweis: Du hast die ganzen Variablen lokal deklariert, das heißt, dass du sie jedes mal wieder Zuweisen musst!


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:29 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