AGB  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Graphen aus der canvas wieder löschen

Ein Thema von Blubbel · begonnen am 11. Okt 2011 · letzter Beitrag vom 11. Okt 2011
Antwort Antwort
Seite 2 von 2     12
Blubbel

Registriert seit: 6. Okt 2011
91 Beiträge
 
#11

AW: Graphen aus der canvas wieder löschen

  Alt 11. Okt 2011, 10:53
Nee, ist ja keiner.... ich zeig dir ma den ganzen QT... Am Koordinatensystem ist ja eh schon ein Rand...
Delphi-Quellcode:
unit main;

interface

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

type
  TForm1 = class(TForm)
    edtEingabe: TEdit;
    lblFX: TLabel;
    lbl_X: TLabel;
    btn_Zeichne: TButton;
    Image1: TImage;
    edt_Bx: TEdit;
    lbl_bx: TLabel;
    edt_C: TEdit;
    lbl_C: TLabel;
    Label2: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    edtFx: TEdit;
    edt_X: TEdit;
    edt_B: TEdit;
    edt_Cx: TEdit;
    btn_Zeichne1: TButton;
    btn_neu: TButton;
    btn_close: TButton;
    Label1: TLabel;
    Label3: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure btn_ZeichneClick(Sender: TObject);
    procedure btn_Zeichne1Click(Sender: TObject);
    procedure btn_closeClick(Sender: TObject);
    procedure btn_neuClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  a,b,c: Real;

implementation

{$R *.dfm}

procedure TForm1.btn_closeClick(Sender: TObject);
begin
 Form1.Close;
end;

procedure TForm1.btn_ZeichneClick(Sender: TObject);
var
  i,j:Integer;
  x,y: Real;
begin
  a:= StrToFloat(edtEingabe.Text);
  b:= StrToFloat(edt_Bx.Text);
  c:= StrToFloat(edt_C.Text);
  i:=20;
  while i<660 do
  begin
    i:=i+1;
    x:=(i-450)/50; //50, da Koordinatensystem in 50er Schritten erstellt ist
    y:=a*sqr(x)+b*x+c;
    j:=round((450-y*50)); //450 Grenze von X-Achse
    Image1.Canvas.Pixels[i,j]:=clblue; //zeichnen
  end;
end;

procedure TForm1.btn_neuClick(Sender: TObject);
begin
  Image1.Canvas.Rectangle(0,0,width,height);
  FormCreate(Sender);
  begin
    edtEingabe.Text:='';
    edt_Bx.Text:='';
    edt_C.Text:='';
    edtFx.Text:='';
    edt_X.Text:='';
    edt_B.Text:='';
    edt_Cx.Text:='';
  end;
end;

procedure TForm1.btn_Zeichne1Click(Sender: TObject);
var
  i,j:Integer;
  x,y: Real;
begin
  a:= StrToFloat(edt_X.Text);
  b:= StrToFloat(edt_B.Text);
  c:= StrToFloat(edt_Cx.Text);
  i:=20;
  while i<660 do
  begin
    i:=i+1;
    x:=(i-450)/50; //50, da Koordinatensystem in 50er Schritten erstellt ist
    y:=a*sqr(x+b)+c;
    j:=round((450-y*50)); //450 Grenze von X-Achse
    Image1.Canvas.Pixels[i,j]:=clred; //zeichnen
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  i,j,k:Integer;
begin
  with Image1.Canvas do
  begin //X-Achse
    MoveTo(1125,450); //Graph
    LineTo(20,450);

    for i:= -8 to 13 do
    begin
      Image1.Canvas.TextOut(450+50*i,455,IntToStr(i)); //Beschriftung
      MoveTo(450+50*i,445); //Striche von Beschriftung
      LineTo(450+50*i,455);
      begin //Y-Achse
        MoveTo(450,20); //Graph
        LineTo(450,660);

        for j := -8 to -1 do
        begin
          Image1.Canvas.TextOut(455,450+50*j,IntToStr(-j)); //Beschriftung
          MoveTo(445,450+50*j); //Striche von Beschriftung
          LineTo(455,450+50*j);

          for k := 1 to 4 do
          begin
            Image1.Canvas.TextOut(455,450+50*k,IntToStr(-k)); //Beschriftung
            MoveTo(445,450+50*k); //Striche von Beschriftung
            LineTo(455,450+50*k);
          end;
        end;
      end;
    end;
  end;
end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
21.058 Beiträge
 
Delphi XE Professional
 
#12

AW: Graphen aus der canvas wieder löschen

  Alt 11. Okt 2011, 10:59
*Puh* da habe ich gerade keinen Nerv dazu, mich da hineinzudenken. Da gibt es zwar noch einiges Verbesserungspotential, aber das ist für einen Anfänger vollkommen normal, also kein Grund zur Sorge. Wenn es so für Dich in Ordnung ist, kannst Du es IMO ruhig Deinem Lehrer vorstellen.
Detlef
Wenn Dein Programm nicht macht, was es soll, nenn es einfach "Version 1.0"

Delphi programming is cool
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi
Online

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
2.199 Beiträge
 
Delphi XE Professional
 
#13

AW: Graphen aus der canvas wieder löschen

  Alt 11. Okt 2011, 11:07
Delphi-Quellcode:
procedure TForm1.btn_ZeichneClick(Sender: TObject);
var
  i,j:Integer;
  x,y,a,b,c: Double;
begin
  Initialize;
  a:= StrToFloat(edtEingabe.Text);
  b:= StrToFloat(edt_Bx.Text);
  c:= StrToFloat(edt_C.Text);
  i:=19;
  Image1.Canvas.pen.Color := clBlue;
  while i<660 do
  begin
    i:=i+1;
    x:=(i-450)/50; //50, da Koordinatensystem in 50er Schritten erstellt ist
    y:=a*sqr(x)+b*x+c;
    j:=round((450-y*50)); //450 Grenze von X-Achse
    if i= 20 then Image1.Canvas.MoveTo(i,j) else Image1.Canvas.LineTo(i,j)
  end;
end;


procedure TForm1.Initialize;
var
  i,j,k:Integer;
begin
  with Image1.Canvas do
  begin //X-Achse
    Brush.Color := clWhite;
    Fillrect(ClientRect);
    MoveTo(1125,450); //Graph
    LineTo(20,450);

    for i:= -8 to 13 do
    begin
      Image1.Canvas.TextOut(450+50*i,455,IntToStr(i)); //Beschriftung
      MoveTo(450+50*i,445); //Striche von Beschriftung
      LineTo(450+50*i,455);
      begin //Y-Achse
        MoveTo(450,20); //Graph
        LineTo(450,660);

        for j := -8 to -1 do
        begin
          Image1.Canvas.TextOut(455,450+50*j,IntToStr(-j)); //Beschriftung
          MoveTo(445,450+50*j); //Striche von Beschriftung
          LineTo(455,450+50*j);

          for k := 1 to 4 do
          begin
            Image1.Canvas.TextOut(455,450+50*k,IntToStr(-k)); //Beschriftung
            MoveTo(445,450+50*k); //Striche von Beschriftung
            LineTo(455,450+50*k);
          end;
        end;
      end;
    end;
  end;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  Initialize;
end;
Thomas Wassermann
Das Problem steckt meistens zwischen den Ohren

DRY DRY KISS
  Mit Zitat antworten Zitat
EWeiss

Registriert seit: 16. Okt 2010
1.162 Beiträge
 
Delphi 2010 Architect
 
#14

AW: Graphen aus der canvas wieder löschen

  Alt 11. Okt 2011, 11:10
Dann sage ihm auch wo er "Initialize" einbinden soll bzw. was es ist (procedure/function)
Falls er es nicht weiss.

Und warum er es ändern sollte.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
1.662 Beiträge
 
Delphi 7 Enterprise
 
#15

AW: Graphen aus der canvas wieder löschen

  Alt 11. Okt 2011, 11:31
Du kannst auch den Graphen mit Pen.Mode pmNotXor neuzeichnen.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
21.058 Beiträge
 
Delphi XE Professional
 
#16

AW: Graphen aus der canvas wieder löschen

  Alt 11. Okt 2011, 12:18
Es ist ja alles gut, schön und richtig, was Ihr hier so postet, aber ich hege so meine Zweifel, ob das dem entspricht, was der Lehrer erwartet. Wobei das allerdings natürlich nur eine Vermutung meinerseits ist bzw. sein kann.
Detlef
Wenn Dein Programm nicht macht, was es soll, nenn es einfach "Version 1.0"

Delphi programming is cool
  Mit Zitat antworten Zitat
Blubbel

Registriert seit: 6. Okt 2011
91 Beiträge
 
#17

AW: Graphen aus der canvas wieder löschen

  Alt 11. Okt 2011, 14:13
Also für meinen Lehrer werde ich es so lassen...
Ich werd mich mal da reindenken und versuchen die codes zu verstehen... Danke euch
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2012 by Daniel R. Wolf