Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Polygon (https://www.delphipraxis.net/131155-polygon.html)

Reap3r 19. Mär 2009 17:36


Polygon
 
Hi Leute!

Ich programmiere erst seit kurzem und bin zur zeit dabei mit Polygon zu arbeiten.
Jedoch blicke ich hier nicht ganz durch.
Ich habe ein Image und einen Button.
Wenn ich den Button klicke soll ein Dreieck gezeichnet werden(im Image).
hierzu habe ich diesen Quelltext:


procedure Dreieck_gs_poly(LO:TPoint; g,h: Integer);


procedure TForm1.Dreieck_gs_poly(LO:TPoint; g,h: Integer);
begin
with Image1.Canvas do begin
Polygon ([Point(LO.x, LO.y),
Point(LO.x+g,LO.y),
Point(LO.x+ (g div 2), LO.y - h)])
end;
end;


procedure TForm1.BDreieckClick(Sender: TObject);
var punkt : TPoint; grundseite,hoehe: integer;
begin
punkt.X := SEx.value ;
punkt.Y := SEy.value ;
grundseite := Ses.value ;
hoehe := SEh.value ;
Dreieck_gs_poly(punkt, grundseite,hoehe);
end;

// SEx, SEy, Ses, SEh sind Spinedits

Jetzt würde ich gerne wissen, wie ich 4 Dreiecke programmiere, die mit den Ecken an einanderhängen und zusammen einen 4-eckigen stern ergeben, am besten mit Polygon.
Ungefähr so:

http://www.bilder-hochladen.net/files/635m-2-jpg.html

mr_emre_d 19. Mär 2009 17:42

Re: Polygon
 
Delphi-Quellcode:
type
  TPolygon = Array of TPoint;

...

procedure CreateTriangle( var Polygon: TPolygon; const Edge1, Edge2, Edge3: TPoint );
begin
  SetLength( Polygon, 3 );
  Polygon[0] := Edge1;
  Polygon[1] := Edge2;
  Polygon[2] := Edge3;
end;

//formcreate:
  CreateTriangle( Dreieck, Point( 100, 100 ), Point( 150, 50 ), Point( 200, 100 ) );

//formpaint
  Canvas.Polygon( Dreieck );

mr_emre_d 19. Mär 2009 19:43

Re: Polygon
 
Hier, der per PN verlangte vollständige Quellcode...

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

  TPolygon = Array of TPoint;

var
  Form1: TForm1;
  Dreieck: TPolygon;

implementation

{$R *.dfm}

procedure CreateTriangle( var Polygon: TPolygon; const Edge1, Edge2, Edge3: TPoint );
begin
  SetLength( Polygon, 3 );
  Polygon[0] := Edge1;
  Polygon[1] := Edge2;
  Polygon[2] := Edge3;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  CreateTriangle( Dreieck, Point( 100, 100 ), Point( 150, 50 ), Point( 200, 100 ) );
end;

procedure TForm1.FormPaint(Sender: TObject);
begin                
  Canvas.Polygon( Dreieck );
end;

end.

mr_emre_d 19. Mär 2009 20:22

Re: Polygon
 
PN:
"Sry aber ich vertsehe etwas nicht ganz...
Wenn ich den Code komplett übernehme, dann geschieht nichts.
Ich sehe auch keinen Button, der eingeplant ist.
Soll der Stern sofort nach programmstart sichtbar sein? "

Öffne Delphi;
Definiere die Typen wie ich sie gemacht habe -> TPolygon = ...
und ein paar globale Variablen (dreieck..)

Dann einfach einen Doppel-Linksklick auf das Formular machen:
Nun bist du im FormCreate!
Dort tippst du den Code ein, den ich auch bei Form1Create eingetippt habe!

Nun klickst wieder auf das Formular (Einfacher Linksklick) und dann wechselst du im Objektinspektor zu "Ereignisse"
Dort gehst du auf OnPaint und Doppelklickst wieder mit der Linken Maustaste!
Jetzt wiederum biste in FormPaint.
Dort tippst du wieder den Code ein.

Damit hättest du schonmal einen Dreick!

Für den Rest sorgst du natürlich selbst :P

EDIT: Natürlich siehst du keinen Button, da keins vorhanden ist .. genauso wie ein Image!
Ich lasse es einfach auf dem Canvas des Formes zeichnen.

MfG

Reap3r 19. Mär 2009 20:32

Re: Polygon
 
Cool Danke für die Erklärung!

Noch eine Frage:

Die anderen Dreiecke müssen ja gedreht sein.

Muss ich somit einfach die Werte in

Delphi-Quellcode:
 CreateTriangle( Dreieck, Point( 100, 100 ), Point( 150, 50 ), Point( 200, 100 ) );
ändern?

mkinzler 19. Mär 2009 20:37

Re: Polygon
 
Ja

Reap3r 19. Mär 2009 20:39

Re: Polygon
 
ok!

d.h.: ausprobieren, wie es passt!^^

mkinzler 19. Mär 2009 20:42

Re: Polygon
 
Du musst die Punkte um den Drehpunkt drehen.

mr_emre_d 19. Mär 2009 20:43

Re: Polygon
 
nicht nur!
Du musst auch weitere Dreiecke definieren!

Einfach dort, wo Dreieck steht, Dreieck2, Dreieck3, .. usw hinklatschen

Beim Zeichnen (FormPaint) die Zeile kopieren und statt Dreieck, Dreieck1, .. usw schreiben ;)

PS: Herzlich willkommnen in der DP :)

MfG

Reap3r 19. Mär 2009 20:49

Re: Polygon
 
Ok Cool!
Habs jetzt dank euch raus! :P

Danke für alle Hilfe!

---> Bis zm nächsten Beitrag^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:51 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