Мне нужно создать пользовательский WPF управления что-то вроде этого таможенной границы в Ярлык WPF
Как я новичок в WPF, я использовал следующий код (извините за VB.NET)
Public Class TextPlaceholder
Inherits System.Windows.Controls.Label
Const CustomBorderWidth As Integer = 2
Public Sub New()
MyBase.New()
Me.BorderBrush = SystemColors.ActiveBorderBrush
End Sub
Protected Overrides Sub OnRender(drawingContext As System.Windows.Media.DrawingContext)
MyBase.OnRender(drawingContext)
Dim pointTopLeft As New Point(-1, -1)
Dim pointTopRight As New Point(Me.ActualWidth, -1)
Dim pointBottomLeft As New Point(-1, Me.ActualHeight)
Dim pointBottomRight As New Point(Me.ActualWidth, Me.ActualHeight)
Dim myPen As New Pen(Me.BorderBrush, CustomBorderWidth)
drawingContext.DrawLine(myPen, pointTopLeft, New Point(pointTopLeft.X + 5, pointTopLeft.Y))
drawingContext.DrawLine(myPen, pointTopLeft, New Point(pointTopLeft.X, pointTopLeft.Y + 5))
drawingContext.DrawLine(myPen, pointTopRight, New Point(pointTopRight.X - 5, pointTopRight.Y))
drawingContext.DrawLine(myPen, pointTopRight, New Point(pointTopRight.X, pointTopRight.Y + 5))
drawingContext.DrawLine(myPen, pointBottomLeft, New Point(pointBottomLeft.X + 5, pointBottomLeft.Y))
drawingContext.DrawLine(myPen, pointBottomLeft, New Point(pointBottomLeft.X, pointBottomLeft.Y - 5))
drawingContext.DrawLine(myPen, pointBottomRight, New Point(pointBottomRight.X - 5, pointBottomRight.Y))
drawingContext.DrawLine(myPen, pointBottomRight, New Point(pointBottomRight.X, pointBottomRight.Y - 5))
End Sub
End Class
Теперь
1) Является ли это лучший способ сделать это, учитывая, что я буду наследовать этот контроль и нужны те же границы на унаследованных управления
2) хорошо ли указать значение по умолчанию для Bor derBrush (быть непрозрачным), как я?
3) Почему мои углы перемещаются с помощью пикселя (на самом деле не правильно связанного)?
Lucas, спасибо за ответы. a) Я не знаю, как установить границу в whitch, но углы будут видны; b) -; c) Насколько я понимаю, LineJoin используется в полигональных строках, но я рисую 8 независимых строк ... * – serhio
Нет проблем, я надеюсь, что мой ответ будет полезен для вас. Я обновил его, чтобы содержать ответы на ваш комментарий. –