![]() |
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:
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.
//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; 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? |
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 |
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