![]() |
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: ![]() |
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 ); |
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. |
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 |
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:
ändern?
CreateTriangle( Dreieck, Point( 100, 100 ), Point( 150, 50 ), Point( 200, 100 ) );
|
Re: Polygon
Ja
|
Re: Polygon
ok!
d.h.: ausprobieren, wie es passt!^^ |
Re: Polygon
Du musst die Punkte um den Drehpunkt drehen.
|
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 |
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 07:30 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