Rectangle
要素にはStrokeDashArray
があり、ダッシュで描画できますが、角の丸みはサポートされていません。 Border
コントロールは、角が丸い素敵な太い線をサポートしますが、実線のみを描画します。
任意のコントロールを使用して、角が丸い破線の境界線を実現するための最良の方法は何ですか?
破線の境界線の例http://img524.imageshack.us/img524/3186/dashedborder.png
WPFボーダーコントロールは破線をサポートしていません。コントロールに点線/破線の境界線を適用する場合は、装飾者でコントロールを装飾するだけです。
これがサンプルの装飾クラスです。これは、あらゆるUIelementの一般的な装飾です。
class DottedLineAdorner : Adorner
{
public UIElement AdornedElement { get; set; }
public DottedLineAdorner(UIElement adornedElement) : base(adornedElement)
{
AdornedElement = adornedElement;
}
protected override void OnRender(DrawingContext drawingContext)
{
Size eltSize = (AdornedElement as FrameworkElement).DesiredSize;
Pen pen = new Pen(Brushes.Blue, 2) { DashStyle = DashStyles.DashDot };
drawingContext.DrawRoundedRectangle(null, pen, new Rect(0, 0, eltSize.Width, eltSize.Height), 10, 10);
}
}
Xamlに単純なテキストブロックがあり、「LayoutGrid」という名前のグリッドに含まれています。
これで、境界線をコードビハインドに適用できます
private void Window_Loaded(object sender, RoutedEventArgs e)
{
AdornerLayer.GetAdornerLayer(LayoutGrid).Add(new DottedLineAdorner(textblock));
}