AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Funktionen mit Paintbox zeichnen

Ein Thema von Konstantin H. · begonnen am 6. Mär 2009 · letzter Beitrag vom 11. Mär 2009
 
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!
Angehängte Grafiken
Dateityp: jpg fertig_526.jpg (36,0 KB, 77x aufgerufen)
  Mit Zitat antworten Zitat
 


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 13:39 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