Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Paintbox malt wo sie will :( (https://www.delphipraxis.net/45887-paintbox-malt-wo-sie-will.html)

glkgereon 13. Mai 2005 20:35


Paintbox malt wo sie will :(
 
hi

ich habe eine Paintbox, unmd möchte darin die CPU-Auslastung darstellen.
diese liegt in einem array WerteCPU in form von Prozentwerten (Integer) vor
mein problem ist nun das ich wenn die Paintbox zb 200 Pixel hoch ist, eine 100%-Auslastung bei y=200 anzeigen will...also praktisch ein strecken.

das habe ich versucht wie folgt zu realisieren(aufgerufen durch timer):

Delphi-Quellcode:
//leeren
  Img_CPU.Canvas.Brush.Color:=ClBlack;
  Img_CPU.Canvas.Rectangle(0,0,Img_CPU.Width,Img_CPU.Height);
//malen
  Mult:=Img_CPU.Height/100;
  Img_CPU.Canvas.Pen.Color:=cllime;
  for i:=1 to Img_CPU.Width-1 do
  begin
    Img_CPU.Canvas.MoveTo(i-1,Img_CPU.Height-Round(Mult*WerteCPU[i-1]-1));
    Img_CPU.Canvas.LineTo(i,Img_CPU.Height-Round(Mult*WerteCPU[i]-1));
  end;
wenn ich nun aber das fenster vergrößere (die Paintbox wird mit größer dank Anchors...) dann wandert der graph nach unten und verschwindet schließlich im nicht-sichtbaren bereich.
verkleinere ich das fenster so wandert der graph nach oben und verschwindet im nicht-sichtbaren bereich. zusätzlich bleiben reste der "alten" kurve im bild.
aber in beiden fällen werden die graphen gestreckt/gestaucht.

wo liegt mein (denk-)fehler?

Narayana 13. Mai 2005 21:22

Re: Paintbox malt wo sie will :(
 
nabend,

ich hatte auch schon mal probleme mit canvas, weil die darstellung sehr von der Bildschirmauflösung abhängt.

Ich glaube dein problem ist, dass sich zwar die Paintbox anpasst (wegen den anchors), aber der Inhalt, weil er mit canvas erstellt ist, dazu keine Möglichkeit hat.

Theoretisch gesehen müsstest du beim OnResize der Paintbox das Canvas neu zeichnen lassen.
Mit derartigen Sachen habe ich aber auch schon schlechte Erfahrungen gemacht: Das Resize wird jedesmal aufgerufen, wenn sich die größe um nur einen Pixel verändert hat. Das bedeutet beim Größerziehen(oder auch Kleinerziehen), dass das Bild total flackert, weil er mit dem Zeichnen nicht hinterherkommt.

Ich wähle bei solchen Problemen immer die Lösung, dass ich kein Verändern der Größe zulasse, sondern nur maximieren. Wenn dann im Resize die Paintbox neu befüllt wird, flackerts nicht, da er ja nur eine Größenveränderung hat.

Obwohl, ich merke gerade...wenn du das durch einen Timer machst...wie oft wird der denn aufgerufen?
Weil eigentlich orientiert er sich ja an der größe der Paintbox...

Aber das ist das einzige was mir zu solchen Canvas Problemen einfällt.

Viel Erfolg weiterhin :-D

glkgereon 14. Mai 2005 08:34

Re: Paintbox malt wo sie will :(
 
ich rufe es per timer jede 10tel sekunde auf.

aber dieses verzerren versuche ich ja durch Mult zu umgehen...

wie würdet ihr das machen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:19 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-2025 by Thomas Breitkreuz