Hallo zusammen,
ich habe die gleiche Aufgabe. Allerdings habe ich sie etwas anders geschrieben.
Leider habe ich bei der Ankathete (b) das Problem, dass der Buchstabe noch Streifen mit sich zieht. Siehe folgendes Bild:
Kann mir jemand sagen, was ich falsch mache?
Gruß Zyran
Neue Frage, neues Thema. Verschoben. ~fufu
ich habe die gleiche Aufgabe. Allerdings habe ich sie etwas anders geschrieben.
VB.NET-Quellcode
- Public Class frmDreieck
- Private Sub frmDreieck_MouseMove(sender As Object, e As MouseEventArgs) Handles Me.MouseMove
- Dim g As Graphics = CreateGraphics()
- g.TextRenderingHint = Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit
- Dim ptA As New PointF(CSng(ClientSize.Width / 2), _
- CSng(ClientSize.Height / 2))
- Static ptB As New PointF(e.X, e.Y) 'vorherige Mausposition
- Dim fn = New Font("Arial", 14)
- Dim pp = New Pen(BackColor) 'Löschen mit Backcolor
- Dim bb = New SolidBrush(BackColor) 'Löschen mit Backcolor
- Dim szVersatz As New Size(-20, -15) 'wo soll die Beschriftung angezeigt werden?
- g.DrawLine(pp, ptA, ptB)
- g.DrawLine(pp, ptB, New PointF(ptA.X, ptB.Y))
- g.DrawLine(pp, ptB, New PointF(ptB.X, ptA.Y))
- g.DrawLine(pp, ptA, New PointF(ptB.X, ptA.Y))
- g.DrawString("A", fn, bb, PointF.Add(ptA, szVersatz))
- g.DrawString("B", fn, bb, PointF.Add(ptB, szVersatz))
- g.DrawString("C", fn, bb, New PointF(ptB.X - 15, ptA.Y))
- g.DrawString("a", fn, bb, MitteDerSeite(ptB, New Point(ptB.X, ptA.Y)))
- g.DrawString("b", fn, bb, MitteDerSeite(ptA, New Point(ptB.X, ptA.Y)))
- g.DrawString("c", fn, bb, PointF.Add(MitteDerSeite(ptA, ptB), New Size(-15, -15)))
- 'Sichtbar zeichnen mit aktueller Mausposition
- ptB = New PointF(e.X, e.Y) 'aktuelle Mausposition zuweisen
- pp.Color = Color.Red
- '--- Dreieck wird gezeichnet
- g.DrawLine(pp, ptA, ptB) 'Hypothenuse
- g.DrawLine(pp, ptA, New PointF(ptB.X, ptA.Y)) 'Ankathete
- g.DrawLine(pp, ptB, New PointF(ptB.X, ptA.Y)) 'Gegenkathete
- '--- Dreieck wurde gezeichnet
- 'Dreieck wird beschriftet
- bb.Color = Color.Green 'sichtbare Schriftfarbe
- Dim ptC = New PointF(ptB.X, ptA.Y)
- g.DrawString("A", fn, bb, PointF.Add(ptA, szVersatz))
- g.DrawString("B", fn, bb, PointF.Add(ptB, szVersatz))
- g.DrawString("C", fn, bb, New PointF(ptB.X - 15, ptA.Y))
- g.DrawString("a", fn, bb, MitteDerSeite(ptB, ptC))
- g.DrawString("b", fn, bb, MitteDerSeite(ptA, ptC))
- g.DrawString("c", fn, bb, PointF.Add(MitteDerSeite(ptA, ptB), New Size(-15, -15)))
- End Sub
- Private Shared Function MitteDerSeite(ByVal a As PointF, ByVal b As PointF) As PointF
- Return New PointF(CSng((a.X + b.X) * 0.5), CSng((a.Y + b.Y) * 0.5))
- End Function
- End Class
Leider habe ich bei der Ankathete (b) das Problem, dass der Buchstabe noch Streifen mit sich zieht. Siehe folgendes Bild:
Kann mir jemand sagen, was ich falsch mache?
Gruß Zyran
Neue Frage, neues Thema. Verschoben. ~fufu
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „fufu“ ()