Pen.Alignment mit DrawLine bzw. DrawPath

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Linux13524.

    Pen.Alignment mit DrawLine bzw. DrawPath

    Hallo an Alle.

    Ich möchte gerne einen Rahmen für ein Control von mir mit DrawLines() bzw. mit DrawPath() zeichnen.
    Soweit eigentlich kein Problem. Wenn ich aber die Linien dicker als 1 zeichnen lasse befindet sich logischerweise ein Teil des Rahmens außerhalb des Controls.
    Nach ein wenig Recherche bin ich dann auf die Pen.Alignment-Eigenschaft gestoßen, welche die Außrichtung dicker Linie setzten soll, was aber anscheinend bei Linien nicht funktioniert (zumindest bei mir).
    Kennt jemand das Problem oder vielleicht auch eine Alternative zu Pen.Alignment?

    Hier noch mein Code:

    VB.NET-Quellcode

    1. Dim p As New Pen(New SolidBrush(_bordercolor), _borderwidth) With {.Alignment = PenAlignment.Inset}
    2. Dim borderpoints() As Point = {...}
    3. Dim border As New GraphicsPath()
    4. border.AddLines(borderpoints())
    5. e.Graphics.DrawLines(p, borderpoints())
    6. 'bzw
    7. e.Graphics.DrawPath(p, border)


    Ich freu mich über jede Hilfe
    Mit freundlichen Grüßen

    Linux
    Das hab ich auch schon probiert, hat aber nicht so wirklich funktioniert. Es war immer entweder der linke und obere oder der rechte und untere Teil abgeschnitten je nachdem wie ich gerundet habe. Also wenn ich mit \ geteilt habe kam bei einer Linienbreite von 3, 1 raus und mit Math.Round 2.
    Mit freundlichen Grüßen

    Linux
    Nein. Einen SmoothingMode hab ich nicht eingestellt, aber ich hab jetzt nochmal die Hälft der Linienbreite bei allen Punkten berücksichtigt, was schonmal bisschenwas gebracht hat. Jetzt ist nurnoch die untere und rechte Linie bei ungeraden Breiten um einen Pixel nach oben verschoben...
    Mit freundlichen Grüßen

    Linux