Einzelnen Beitrag anzeigen

Benutzerbild von Konstantin H.
Konstantin H.

Registriert seit: 3. Nov 2008
Ort: Schwedt/Oder
27 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Funktionen mit Paintbox zeichnen

  Alt 10. Mär 2009, 18:19
Hallo!

danke für alle eure Tipps! Ich hab am Wochenende und Montag daran gearbeitet, das Program vertig zu kriegen. Und ich habs geschafft!

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    PaintBox1: TPaintBox;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    a,b,c,d,e,f,g,h,k,j,xa,xe,ya,ye,i :Integer;{ Public-Deklarationen }
  end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button2Click(Sender: TObject);
    Var i,s,t:integer;
begin
a:=strtoint(edit3.text); //kleinster x-Wert
b:=strtoint(edit4.text); //größter x-Wert
c:=strtoint(edit5.text); //kleinster y-Wert
d:=strtoint(edit6.text); //größter y-Wert
e:=paintbox1.height; //Höhe der Paintbox
f:=paintbox1.width; //Weite der Paintbox
g:=round(f/(b-a)); //Pixel pro Einheit in x-Richtung
k:=round(e/(d-c)); //Pixel pro Einheit in y-Richtung
xa:=0; //Anfang der x-Achse
//ya:=e div 2;
xe:=f; //Ende der x-Achse
//ye:=ya;
h:=(-a*g); //Nullkoordinate x-achse
j:=(d*k); //Nullkoordinate y-achse

  with paintbox1.canvas do begin
  pen.color:=clblue;
  Pen.Width:=3;
  moveto(xa,j);
  lineto(xe,j);
  Brush.color:=clred; //Farbe der Pfeilspitze x-Achse
  polygon([point(xe,j),point(xe-10,j+5),point(xe-10,j-5)]); //Pfeil x-Achse
   for i:=0 to ((b-a)-0) do begin
      pen.color:=clgreen; //Farbe der Striche an der x-Achse
      Pen.Width:=3;
      moveto(i*g,j);
      lineto(i*g,j-10); //Striche an der x-Achse
      end;
  moveto(h,e);
  lineto(h,0);
   Brush.color:=clyellow; //Farbe der Pfeilspitze y-Achse
   polygon([point(h,0),point(h-5,10),point(h+5,10)]); //Pfeil y-Achse
    for i:=0 to ((d-c)-0) do begin
      pen.color:=clblue; //Farbe der Striche an der y-Achse
      Pen.Width:=3;
      moveto(h,i*k);
      lineto(h+10,i*k); //Striche an der x-Achse
      s:=paintbox1.top; //Abstand der oberen Kante der Paintbox von oben
      t:=paintbox1.left; //Abstand der linken Kante der Paintbox von links
      label7.left:=t+h-g; //Position von Label7 von Links
      label7.top:=s+j+k div 2; //Position von Label7 von oben
      label7.caption:='-1'; //Text von Label7
       label8.left:=t+h+g; //Position von Label8 von Links
      //label8.top:=j; //Position von Label8 von oben
      label8.top:=s+j+k div 2; //Position von Label8 von oben
      label8.caption:='+1'; //Text von Label8
       label9.left:=t+h-15; //Position von Label9 von Links
      //label8.top:=j; //Position von Label9 von oben
      label9.top:=s+j+k-10; //Position von Label9 von oben
      label9.caption:='-1'; //Text von Label9


       end;

 end;
 end;

procedure TForm1.Button3Click(Sender: TObject);
begin
   with paintbox1.canvas do begin
   repaint; //Löschen der Paintbox
   end;

end;

procedure TForm1.Button1Click(Sender: TObject);
Var m,n,i:integer;
begin
m:=strtoint(edit1.text);//Anstieg der FKT.
n:=strtoint(edit2.text);//y-Achsenabschnitt der FKT.
a:=strtoint(edit3.text); //kleinster x-Wert
b:=strtoint(edit4.text); //größter x-Wert
c:=strtoint(edit5.text); //kleinster y-Wert
d:=strtoint(edit6.text); //größter y-Wert
e:=paintbox1.height; //Höhe der Paintbox
f:=paintbox1.width; //Weite der Paintbox
g:=round(f/(b-a)); //Pixel pro Einheit in x-Richtung
k:=round(e/(d-c)); //Pixel pro Einheit in y-Richtung
xa:=0; //Anfang der x-Achse
xe:=f; //Ende der x-Achse
h:=(-a*g); //Nullkoordinate x-achse
j:=(d*k); //Nullkoordinate y-achse

    with paintbox1.canvas do begin //Zeichnen des Graphen, es geht sicher auch einfacher
    moveto(h,(-n*k)+j); //Bewegung zum Koordinatenursprung
    lineto(h+(b*g),j-((m*b*k)+(n*k))); //Zeichnen nach rechts
    moveto(h,(-n*k)+j); //Bewegung zum Koordinatenursprung
    lineto(h-(abs(a)*g),j+(-1)*(-m*(-a)*k)+(-n*k)); //Zeichnen nach links
    End;
end;
end.
Danke für alle!
Miniaturansicht angehängter Grafiken
fertig_526.jpg  
  Mit Zitat antworten Zitat