add extended line cap configuration

This commit is contained in:
2021-02-23 09:21:12 +01:00
parent 4480c00cb7
commit 7d7cb0eee0
6 changed files with 72 additions and 5 deletions

View File

@@ -0,0 +1,15 @@
Imports System.Drawing
Imports System.Drawing.Drawing2D
Public Class ArrowLineCapProps
Inherits LineCapProps
Public Property Size As New Size(10, 10)
Public Property IsFilles As Boolean = True
Friend Overrides Function Configure() As LineCapConfigurationArgs
Dim cap As New AdjustableArrowCap(Size.Width, Size.Height, IsFilles)
Return New LineCapConfigurationArgs(cap)
End Function
End Class

View File

@@ -113,10 +113,21 @@ Public Class DefaultDrawMethodes
Public Shared Sub DrawLine(e As PaintingObjectPaintEventArgs) Public Shared Sub DrawLine(e As PaintingObjectPaintEventArgs)
Dim obj As PaintingObject = e.PaintingObject Dim obj As PaintingObject = e.PaintingObject
Dim p2 As New Pen(obj.OutlineColor, obj.OutlineThicknes) With { Dim p2 As New Pen(obj.OutlineColor, obj.OutlineThicknes) With {
.DashStyle = obj.OutlineDashStyle, .DashStyle = obj.OutlineDashStyle
.StartCap = obj.LineStartCap,
.EndCap = obj.LineEndCap
} }
If obj.LineStartCap IsNot Nothing Then
Dim args As LineCapConfigurationArgs = obj.LineStartCap.Configure
p2.StartCap = args.LineCap
p2.CustomStartCap = args.CustomLineCap
End If
If obj.LineEndCap IsNot Nothing Then
Dim args As LineCapConfigurationArgs = obj.LineEndCap.Configure
p2.EndCap = args.LineCap
p2.CustomEndCap = args.CustomLineCap
End If
p2.Alignment = PenAlignment.Center p2.Alignment = PenAlignment.Center
Dim no As PointF = New PointF(e.X, e.Y) Dim no As PointF = New PointF(e.X, e.Y)
e.Graphics.DrawLine(p2, no, no + obj.Size) e.Graphics.DrawLine(p2, no, no + obj.Size)

View File

@@ -0,0 +1,13 @@
Imports System.Drawing.Drawing2D
Public Class DefaultLineCapProps
Inherits LineCapProps
Public Property LineCap As LineCap = LineCap.Flat
Public Property CustomLineCap As CustomLineCap = Nothing
Friend Overrides Function Configure() As LineCapConfigurationArgs
Return New LineCapConfigurationArgs(LineCap, CustomLineCap)
End Function
End Class

View File

@@ -0,0 +1,21 @@
Imports System.Drawing.Drawing2D
Public Class LineCapConfigurationArgs
Public ReadOnly Property LineCap As LineCap
Public ReadOnly Property CustomLineCap As CustomLineCap
Public Sub New(lineCap As LineCap)
Me.New(lineCap, Nothing)
End Sub
Public Sub New(customLineCap As CustomLineCap)
Me.New(Nothing, customLineCap)
End Sub
Public Sub New(lineCap As LineCap, customLineCap As CustomLineCap)
Me.LineCap = lineCap
Me.CustomLineCap = customLineCap
End Sub
End Class

View File

@@ -0,0 +1,7 @@
Imports System.Drawing
Public MustInherit Class LineCapProps
Friend MustOverride Function Configure() As LineCapConfigurationArgs
End Class

View File

@@ -19,8 +19,8 @@ Imports Newtonsoft.Json
Public Property OutlineColor As Color = Color.DarkBlue Public Property OutlineColor As Color = Color.DarkBlue
Public Property OutlineThicknes As Single = 1 Public Property OutlineThicknes As Single = 1
Public Property OutlineDashStyle As DashStyle = DashStyle.Solid Public Property OutlineDashStyle As DashStyle = DashStyle.Solid
Public Property LineStartCap As LineCap = LineCap.Flat Public Property LineStartCap As LineCapProps = Nothing
Public Property LineEndCap As LineCap = LineCap.Flat Public Property LineEndCap As LineCapProps = Nothing
<JsonProperty> <JsonProperty>
Private _Text As String = "" Private _Text As String = ""
Public Property TextPosition As TextPosition = TextPosition.FullCenter Public Property TextPosition As TextPosition = TextPosition.FullCenter