Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Kreis berechnen und anzeigen... (https://www.delphipraxis.net/107148-kreis-berechnen-und-anzeigen.html)

Muffel 23. Jan 2008 09:18


Kreis berechnen und anzeigen...
 
Hallo,
ich wollte einen Kreis Berechnen. dh
Kreisumfang Kreisfläche usw ..
also man gibt zb einen radius ein und der umfang erscheint.. das ist nicht das problem ..

Nun will ich auch das der Kreis auch angezeigt wird ..
zb das der kreis mit dem radius 5cm halb so groß ist wie der kreis mit dem radius 10 cm

und falls möglich auch das der flächeninhalt des kreissektors angezeigt wird..

wäre nett wenn mir einer bei dieser verbildlichung helfen könnte

danke im vorraus

JasonDX 23. Jan 2008 09:32

Re: Kreis berechnen und anzeigen...
 
Für kleine Zeichnungen nimmst du am besten die TPaintBox-Komponente. Über die Canvas-Eigenschaft der PaintBox kannst du nun malen. Dafür stehen dir eine Vielzahl von Möglichkeiten zur Verfügung, Delphi-Referenz durchsuchenEllipse ist eine davon.
Für den Kreissektor kannst du dir evt. Delphi-Referenz durchsuchenPie oder Delphi-Referenz durchsuchenMoveTo/Delphi-Referenz durchsuchenLineTo in Kombination mit Delphi-Referenz durchsuchenFloodFill angucken.

greetz
Mike

Muffel 23. Jan 2008 19:56

Re: Kreis berechnen und anzeigen...
 
ich habe nie mit ner paintbox und canvas gearbeitet , kannst du mir sagen wie ich das nutze ?
ich will ja einfach das die werte die rauskommen übernommen werden ..
wie zb
radius habe ich 5 eingegeben ..
ok dh der umfang ist 2.r.Pi und das soll der halt zeichnen ...
MfG

Looper 23. Jan 2008 20:48

Re: Kreis berechnen und anzeigen...
 
Benutzen tust du das Canvas so:
Delphi-Quellcode:
PaintBox1.Canvas.
Die Befehle dafür findest du unter diesem Link ;)
Tipps von dsdt.info

mfg Looper

Muffel 24. Jan 2008 16:24

Re: Kreis berechnen und anzeigen...
 
das bringt mich leider nicht weiter ..
wie kann ich denn diese functionen auf das ergebnis meiner rechnungen übertragen ?
kann mir einer einen beispielscode mal zeigen wie man das ungefähr macht ?

mfg
Muffel

DeddyH 24. Jan 2008 16:37

Re: Kreis berechnen und anzeigen...
 
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    edt1: TEdit;
    pb1: TPaintBox;
    procedure edt1KeyPress(Sender: TObject; var Key: Char);
    procedure FormCreate(Sender: TObject);
    procedure pb1Paint(Sender: TObject);
  private
    { Private-Deklarationen }
    FRadius: integer;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.edt1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
    begin
      Key := #0;
      FRadius := StrToIntDef(edt1.Text,0);
      pb1.repaint;
    end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FRadius := 0;
end;

procedure TForm1.pb1Paint(Sender: TObject);
const Start = 100;
var Kantenlaenge: Integer;
begin
  with pb1 do
    begin
      Canvas.Pen.Color := clRed;
      SetMapMode(Canvas.Handle, MM_LOMETRIC);
      Kantenlaenge := FRadius * 20 + Start;
      Ellipse(Canvas.Handle,pb1.Left + Start,-(pb1.Top + Start),pb1.Left + Kantenlaenge,-(pb1.Top + Kantenlaenge));
    end;
end;

end.
Wenn ich mich nicht verrechnet habe, bekommst Du so einen Kreis mit dem im Edit eingegebenen Radius in mm (Eingabe mit ENTER abschließen).

Muffel 24. Jan 2008 21:36

Re: Kreis berechnen und anzeigen...
 
hallo
ich habe es genau so gemacht wie du es gesagt hast
leider kommt nur ein stumpfes geräusch wenn ich eine zahl eingebe und bestätige...
=/

grenzgaenger 24. Jan 2008 21:40

Re: Kreis berechnen und anzeigen...
 
hallo muffel,

wie wärs mit 'ner TChart komponente...? da brauchste nur 'n paarameter übergeben und die kompo weiss selbst, wie man einen kreis zeichnet... ;-)

Muffel 24. Jan 2008 21:52

Re: Kreis berechnen und anzeigen...
 
Liste der Anhänge anzeigen (Anzahl: 1)
hey
wie gesagt noch nie mit paintbox ö.A. gearbeitet..
ich zeig euch jetzt mal was ich meine vll ist es dann besser zu verstehen ;)

hier auch nochmal der sourcecode

es würde mir reichen würde ich nur zb den kreis durch den radius erzeugen ..
wie man durch die anderen daten an einen kreis kommt kann ich ja dann leicht ableiten ...



Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    radiuslbl: TLabel;
    radiusedit: TEdit;
    winkellbl: TLabel;
    winkeledit: TEdit;
    laengelbl: TLabel;
    laengeedit: TEdit;
    RadioGroup1: TRadioGroup;
    umfangbut: TButton;
    flaechebut: TButton;
    laengebut: TButton;
    winkelbut: TButton;
    flaechekreisbut: TButton;
    bogenbut: TButton;
    Panel1: TPanel;
    resultlbl: TLabel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    neubut: TButton;
    procedure FormCreate(Sender: TObject);
    procedure setzenbutClick(Sender: TObject);
    procedure umfangbutClick(Sender: TObject);
    procedure flaechebutClick(Sender: TObject);
    procedure laengebutClick(Sender: TObject);
    procedure winkelbutClick(Sender: TObject);
    procedure flaechekreisbutClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure neubutClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
umfangbut.Enabled := false;
flaechebut.Enabled := false;
bogenbut.Enabled := false;
winkelbut.Enabled := false;
laengebut.Enabled := false;
flaechekreisbut.Enabled := false;
radiuslbl.Enabled := false;
radiusedit.Enabled := false;
winkellbl.Enabled := false;
winkeledit.Enabled := false;
laengelbl.Enabled := false;
laengeedit.Enabled := false;
neubut.Enabled := false;
end;

procedure TForm1.setzenbutClick(Sender: TObject);
begin
radiuslbl.Enabled := false;
radiusedit.Enabled := false;
winkellbl.Enabled := false;
winkeledit.Enabled := false;
laengelbl.Enabled := false;
laengeedit.Enabled := false;
umfangbut.Enabled := true;
flaechebut.Enabled := true;
bogenbut.Enabled := true;
winkelbut.Enabled := true;
laengebut.Enabled := true;
flaechekreisbut.Enabled := true;
end;

procedure TForm1.umfangbutClick(Sender: TObject);

VAR Radius : REAL;
  begin
    Radius := StrToFloat(radiusedit.Text);
resultlbl.Caption := FloatToStr(Radius*2*Pi);
neubut.Enabled := true;

end;

procedure TForm1.flaechebutClick(Sender: TObject);
VAR Radius : REAL;
  begin
    Radius := StrToFloat(radiusedit.Text);
resultlbl.Caption := FloatToStr(Radius*Radius*Pi);
end;

procedure TForm1.laengebutClick(Sender: TObject);
VAR winkel : REAL; Var radius : Real;
  begin
    radius := StrToFloat(radiusedit.Text);
    winkel := StrToFloat(winkeledit.Text);
resultlbl.Caption := FloatToStr(winkel/180*radius*Pi);

end;

procedure TForm1.winkelbutClick(Sender: TObject);
VAR laenge : REAL;
  begin
    laenge := StrToFloat(laengeedit.Text);
resultlbl.Caption := FloatToStr(laenge/Pi*180);
end;

procedure TForm1.flaechekreisbutClick(Sender: TObject);
VAR Radius : REAL;  var winkel : Real ;
  begin
    Radius := StrToFloat(radiusedit.Text);
    winkel := StrToFloat(winkeledit.Text);
resultlbl.Caption := FloatToStr(winkel/360*radius*radius*Pi);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
radiuslbl.Enabled := true;
radiusedit.Enabled := true;
Button2.Enabled := false;
Button3.Enabled := false;
Button4.Enabled := false;
Button5.Enabled := false;
Button6.Enabled := false;
Button1.Enabled := false;
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
radiuslbl.Enabled := false;
radiusedit.Enabled := false;
winkellbl.Enabled := false;
winkeledit.Enabled := false;
laengelbl.Enabled := false;
laengeedit.Enabled := false;
Button7.Enabled := false;
umfangbut.Enabled := true;
end;

procedure TForm1.neubutClick(Sender: TObject);
begin
umfangbut.Enabled := true;
flaechebut.Enabled := true;
bogenbut.Enabled := true;
winkelbut.Enabled := true;
laengebut.Enabled := true;
flaechekreisbut.Enabled := true;
radiuslbl.Enabled := true;
radiusedit.Enabled := true;
winkellbl.Enabled := true;
winkeledit.Enabled := true;
laengelbl.Enabled := true;
laengeedit.Enabled := true;
resultlbl.Caption := FloatToStr(0*0);
end;

end.
jetzt habe ich versucht den vorschlag von deddy einzubauen .. aber ohne erfolg..
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    radiuslbl: TLabel;
    radiusedit: TEdit;
    winkellbl: TLabel;
    winkeledit: TEdit;
    laengelbl: TLabel;
    laengeedit: TEdit;
    RadioGroup1: TRadioGroup;
    umfangbut: TButton;
    flaechebut: TButton;
    laengebut: TButton;
    winkelbut: TButton;
    flaechekreisbut: TButton;
    bogenbut: TButton;
    Panel1: TPanel;
    resultlbl: TLabel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    neubut: TButton;
    pb1: TPaintBox1;
    edt1: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure setzenbutClick(Sender: TObject);
    procedure umfangbutClick(Sender: TObject);
    procedure flaechebutClick(Sender: TObject);
    procedure laengebutClick(Sender: TObject);
    procedure winkelbutClick(Sender: TObject);
    procedure flaechekreisbutClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure neubutClick(Sender: TObject);
    procedure edt1KeyPress(Sender: TObject; var Key: Char);

    procedure pb1Paint(Sender: TObject);
  private
    { Private-Deklarationen }
    FRadius: integer;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
umfangbut.Enabled := false;
flaechebut.Enabled := false;
bogenbut.Enabled := false;
winkelbut.Enabled := false;
laengebut.Enabled := false;
flaechekreisbut.Enabled := false;
radiuslbl.Enabled := false;
radiusedit.Enabled := false;
winkellbl.Enabled := false;
winkeledit.Enabled := false;
laengelbl.Enabled := false;
laengeedit.Enabled := false;
neubut.Enabled := false;
FRadius := 0;
end;

procedure TForm1.setzenbutClick(Sender: TObject);
begin
radiuslbl.Enabled := false;
radiusedit.Enabled := false;
winkellbl.Enabled := false;
winkeledit.Enabled := false;
laengelbl.Enabled := false;
laengeedit.Enabled := false;
umfangbut.Enabled := true;
flaechebut.Enabled := true;
bogenbut.Enabled := true;
winkelbut.Enabled := true;
laengebut.Enabled := true;
flaechekreisbut.Enabled := true;
end;

procedure TForm1.umfangbutClick(Sender: TObject);

VAR Radius : REAL;
  begin
    Radius := StrToFloat(radiusedit.Text);
resultlbl.Caption := FloatToStr(Radius*2*Pi);
neubut.Enabled := true;

end;

procedure TForm1.flaechebutClick(Sender: TObject);
VAR Radius : REAL;
  begin
    Radius := StrToFloat(radiusedit.Text);
resultlbl.Caption := FloatToStr(Radius*Radius*Pi);
end;

procedure TForm1.laengebutClick(Sender: TObject);
VAR winkel : REAL; Var radius : Real;
  begin
    radius := StrToFloat(radiusedit.Text);
    winkel := StrToFloat(winkeledit.Text);
resultlbl.Caption := FloatToStr(winkel/180*radius*Pi);

end;

procedure TForm1.winkelbutClick(Sender: TObject);
VAR laenge : REAL;
  begin
    laenge := StrToFloat(laengeedit.Text);
resultlbl.Caption := FloatToStr(laenge/Pi*180);
end;

procedure TForm1.flaechekreisbutClick(Sender: TObject);
VAR Radius : REAL;  var winkel : Real ;
  begin
    Radius := StrToFloat(radiusedit.Text);
    winkel := StrToFloat(winkeledit.Text);
resultlbl.Caption := FloatToStr(winkel/360*radius*radius*Pi);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
radiuslbl.Enabled := true;
radiusedit.Enabled := true;
Button2.Enabled := false;
Button3.Enabled := false;
Button4.Enabled := false;
Button5.Enabled := false;
Button6.Enabled := false;
Button1.Enabled := false;
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
radiuslbl.Enabled := false;
radiusedit.Enabled := false;
winkellbl.Enabled := false;
winkeledit.Enabled := false;
laengelbl.Enabled := false;
laengeedit.Enabled := false;
Button7.Enabled := false;
umfangbut.Enabled := true;
end;

procedure TForm1.neubutClick(Sender: TObject);
begin
umfangbut.Enabled := true;
flaechebut.Enabled := true;
bogenbut.Enabled := true;
winkelbut.Enabled := true;
laengebut.Enabled := true;
flaechekreisbut.Enabled := true;
radiuslbl.Enabled := true;
radiusedit.Enabled := true;
winkellbl.Enabled := true;
winkeledit.Enabled := true;
laengelbl.Enabled := true;
laengeedit.Enabled := true;
resultlbl.Caption := FloatToStr(0*0);
end;
procedure TForm1.edt1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
    begin
      Key := #0;
      FRadius := StrToIntDef(edt1.Text,0);
      pb1.repaint;
    end;
end;


procedure TForm1.pb1Paint(Sender: TObject);
const Start = 100;
var Kantenlaenge: Integer;
begin
  with pb1 do
    begin
      Canvas.Pen.Color := clRed;
      SetMapMode(Canvas.Handle, MM_LOMETRIC);
      Kantenlaenge := FRadius * 20 + Start;
      Ellipse(Canvas.Handle,pb1.Left + Start,-(pb1.Top + Start),pb1.Left + Kantenlaenge,-(pb1.Top + Kantenlaenge));
    end;
end;


end.

DeddyH 25. Jan 2008 07:21

Re: Kreis berechnen und anzeigen...
 
Was ist denn TPaintbox1?


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:39 Uhr.
Seite 1 von 2  1 2      

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