AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Paintbox malt wo sie will :(
Thema durchsuchen
Ansicht
Themen-Optionen

Paintbox malt wo sie will :(

Ein Thema von glkgereon · begonnen am 13. Mai 2005 · letzter Beitrag vom 14. Mai 2005
Antwort Antwort
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#1

Paintbox malt wo sie will :(

  Alt 13. Mai 2005, 21:35
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?
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Narayana
(Gast)

n/a Beiträge
 
#2

Re: Paintbox malt wo sie will :(

  Alt 13. Mai 2005, 22:22
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
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#3

Re: Paintbox malt wo sie will :(

  Alt 14. Mai 2005, 09:34
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?
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:36 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