Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Diagramm selber schreiben (https://www.delphipraxis.net/44668-diagramm-selber-schreiben.html)

Christian18 22. Apr 2005 14:47


Diagramm selber schreiben
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich bin gerade dabei ein Diagramm selber zu schrieben. dabei ist mir aufgefallen, dass es nicht so wirklich funktioniert. Ich habe ein Image erstellt wo Ihr meinen Fehler mal anschauen könnt. Mein Problem ist folgendes:

- wenn ich die Striche auf meinen Achsen einzeichne, dann macht das Programm das zwar auch, aber ich finde das es nicht genau ist. Kann es sein das diese Differenz zum wirklichen ende der achse durch irgendwelche rundungen kommt die Delphi vornimmt???

Hier jetzt noch mal mein Code:
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
  var i     : TImage;  // Image zum Anzeigen des Diagramms
      r     : Integer; // Rand
      wx, wy : Integer; // Breite zwischen den Strichen
      j     : Integer; // Schleifenvariable
begin
  // Parameter setzen
  i:=Image1;
  r:=30;

  // Rahmen zeichnen
  i.Canvas.Rectangle(0, 0, i.Width, i.Height);

  // Achsen zeichnen
  i.Canvas.MoveTo(r, r);
  i.Canvas.LineTo(r, i.Height - r);
  i.Canvas.LineTo(i.Width - r, i.Height - r);

  // Skallierung berechnen und zeichnen
  wx:=(i.Width - 2 * r) div 11;
  wy:=(i.Height - 2 * r) div 5;
  for j:=0 to 11 do
    begin
      i.Canvas.MoveTo(r + wx * j, i.Height - r);
      i.Canvas.LineTo(r + wx * j, i.Height - r + 3);
      i.Canvas.MoveTo(r, i.Height - r - wy * j);
      i.Canvas.LineTo(r - 3, i.Height - r - wy * j);
    end;

end;
Mit freundlichen Grüßen

Christian18

shmia 22. Apr 2005 15:14

Re: Diagramm selber schreiben
 
Zitat:

Zitat von Christian18
- wenn ich die Striche auf meinen Achsen einzeichne, dann macht das Programm das zwar auch, aber ich finde das es nicht genau ist. Kann es sein das diese Differenz zum wirklichen ende der achse durch irgendwelche rundungen kommt die Delphi vornimmt???

Die Abständen zw. den Strichen darf kein Integer, sondern muss Double sein. (Variable wx, wy)
Bei den Methoden MoveTo, LineTo verwendest du die Funktion Round, um auf ganze Pixel zu runden.
Delphi-Quellcode:
.MoveTo(r + Round(wx * j), i.Height - r);

Christian18 22. Apr 2005 21:41

Re: Diagramm selber schreiben
 
Hallo,

meinst du wirklich das es daran liegt??? Ich habe es mal getestet und ich habe keinen unterschied feststellen können.

Mit freundlichen Grüßen

Christian18

Khabarakh 22. Apr 2005 21:46

Re: Diagramm selber schreiben
 
Hast du auch div durch / ersetzt?


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