Hallo ![]()
Ich bin gerade dabei mich mit GDI+ anzufreunden und versuche deshalb ein kleines Programm zu schreiben, welches Dreiecke zeichnen soll.
Am Anfang sollen dabei die Seitenlängen für a,b und c des Dreiecks ABC angegeben werden. Nach einem Buttonklick wird das Dreieck analysiert und auf Konstruierbarkeit und Eigenschaften überprüft, was soweit auch alles klappt.
Über einen weiteren Button wird nun eine ChildGUI aufgerufen, auf der das Dreieck gezeichnet werden soll.
Mein Denkansatz ist folgender:
1. An einer Startkoordinate (hier: 125,280) wird die längste der 3 Seiten gezeichnet. Folglich hab ich nun die Koordinaten von A und B
2. Von dort aus soll nun irgendwie der Punkt C ermittelt werden. Die Abstände AC und BC haben wir ja mit den Seitenlängen bereits gegeben.
Wie stell ich das nun am besten an? Verwende ich die richtige Funktion?
Habe es bereits mit 2 Kreisen um A und B probiert, jedoch ist mir die Berechnung einer allgemeinen Formel zur Berechnung des Schnittpunktes zweier Kreise zu kompliziert (der höher gelegen Schnittpunkt wäre C). Es muss doch irgendwie gehen oder nicht?^^ Hoffe ich bekomme hier Hilfe hab Google schon abgenutzt auf Lösungssuche^^
Hier das Scriptschnipsel zur Dreieckskonstruktion:
Spoiler anzeigen
$Form2 = GUICreate("Dreieck-Zeichner - Dreieck", $iWidth, $iHeight, 234, 173, -1, -1, $Form1)
;Zeichenfeld reicht von (0,0) bis (425,305)
_GDIPlus_Startup()
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($Form2)
$Button5 = GUICtrlCreateButton("Als Bild speichern", 112, 312, 100, 22, $BS_FLAT)
$Button6 = GUICtrlCreateButton("Zurück", 216, 312, 100, 22, $BS_FLAT)
$Button7 = GUICtrlCreateButton("Ende", 320, 312, 100, 22, $BS_FLAT) ;macht GDI_Shutdown und GraphicsDispose
$Button8 = GUICtrlCreateButton("Daten anzeigen", 8, 312, 100, 22, $BS_FLAT)
GUISetState(@SW_SHOW)
$x1 = 125
$y1 = 280
$x2 = 125+$TriHyp ;TriHyp ist die vorher ermittelte, längste Seite des Dreiecks
$y2 = 280
_GDIPlus_GraphicsDrawLine($hGraphic, $x1, $y1, $x2, $y2) ;Die Längste Seite ($TriHyp) wird gezeichnet
;-->hier weiß ich nicht weiter bzw ich weiß nicht in Richtung welcher Koordinate ich die anderen beiden Seiten zeichnen sollte
Schöne Grüße, sondaschuela69