AGB  ·  Datenschutz  ·  Impressum  







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

Polygon

Ein Thema von Reap3r · begonnen am 19. Mär 2009 · letzter Beitrag vom 19. Mär 2009
Antwort Antwort
Reap3r

Registriert seit: 19. Mär 2009
87 Beiträge
 
#1

Polygon

  Alt 19. Mär 2009, 18:36
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
  Mit Zitat antworten Zitat
mr_emre_d
(Gast)

n/a Beiträge
 
#2

Re: Polygon

  Alt 19. Mär 2009, 18:42
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 );
  Mit Zitat antworten Zitat
mr_emre_d
(Gast)

n/a Beiträge
 
#3

Re: Polygon

  Alt 19. Mär 2009, 20:43
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.
  Mit Zitat antworten Zitat
mr_emre_d
(Gast)

n/a Beiträge
 
#4

Re: Polygon

  Alt 19. Mär 2009, 21:22
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

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
  Mit Zitat antworten Zitat
Reap3r

Registriert seit: 19. Mär 2009
87 Beiträge
 
#5

Re: Polygon

  Alt 19. Mär 2009, 21:32
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

 CreateTriangle( Dreieck, Point( 100, 100 ), Point( 150, 50 ), Point( 200, 100 ) ); ändern?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Polygon

  Alt 19. Mär 2009, 21:37
Ja
Markus Kinzler
  Mit Zitat antworten Zitat
Reap3r

Registriert seit: 19. Mär 2009
87 Beiträge
 
#7

Re: Polygon

  Alt 19. Mär 2009, 21:39
ok!

d.h.: ausprobieren, wie es passt!^^
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Polygon

  Alt 19. Mär 2009, 21:42
Du musst die Punkte um den Drehpunkt drehen.
Markus Kinzler
  Mit Zitat antworten Zitat
mr_emre_d
(Gast)

n/a Beiträge
 
#9

Re: Polygon

  Alt 19. Mär 2009, 21:43
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
  Mit Zitat antworten Zitat
Reap3r

Registriert seit: 19. Mär 2009
87 Beiträge
 
#10

Re: Polygon

  Alt 19. Mär 2009, 21:49
Ok Cool!
Habs jetzt dank euch raus!

Danke für alle Hilfe!

---> Bis zm nächsten Beitrag^^
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:27 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