AGB  ·  Datenschutz  ·  Impressum  







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

Kreis berechnen und anzeigen...

Ein Thema von Muffel · begonnen am 23. Jan 2008 · letzter Beitrag vom 25. Jan 2008
Antwort Antwort
Seite 1 von 2  1 2      
Muffel

Registriert seit: 11. Aug 2007
11 Beiträge
 
#1

Kreis berechnen und anzeigen...

  Alt 23. Jan 2008, 09:18
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
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#2

Re: Kreis berechnen und anzeigen...

  Alt 23. Jan 2008, 09:32
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
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Muffel

Registriert seit: 11. Aug 2007
11 Beiträge
 
#3

Re: Kreis berechnen und anzeigen...

  Alt 23. Jan 2008, 19:56
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
  Mit Zitat antworten Zitat
Looper

Registriert seit: 28. Sep 2007
Ort: Hamburg
131 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Kreis berechnen und anzeigen...

  Alt 23. Jan 2008, 20:48
Benutzen tust du das Canvas so:
PaintBox1.Canvas. Die Befehle dafür findest du unter diesem Link
Tipps von dsdt.info

mfg Looper
  Mit Zitat antworten Zitat
Muffel

Registriert seit: 11. Aug 2007
11 Beiträge
 
#5

Re: Kreis berechnen und anzeigen...

  Alt 24. Jan 2008, 16:24
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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Kreis berechnen und anzeigen...

  Alt 24. Jan 2008, 16:37
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).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Muffel

Registriert seit: 11. Aug 2007
11 Beiträge
 
#7

Re: Kreis berechnen und anzeigen...

  Alt 24. Jan 2008, 21:36
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...
=/
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#8

Re: Kreis berechnen und anzeigen...

  Alt 24. Jan 2008, 21:40
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...
  Mit Zitat antworten Zitat
Muffel

Registriert seit: 11. Aug 2007
11 Beiträge
 
#9

Re: Kreis berechnen und anzeigen...

  Alt 24. Jan 2008, 21:52
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.
Angehängte Dateien
Dateityp: rar kreisberechnungen_334.rar (3,8 KB, 12x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Kreis berechnen und anzeigen...

  Alt 25. Jan 2008, 07:21
Was ist denn TPaintbox1?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:45 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