我有一个带有实心画笔的简单圆角边框:
<Border BorderThickness="2,0,2,0" CornerRadius="10,10,10,10" BorderBrush="Green"/>
看起来像我期待的那样。现在,我希望边框有一个虚线:
<Border BorderThickness="2,0,2,0" CornerRadius="10,10,10,10">
<Border.BorderBrush>
<VisualBrush>
<VisualBrush.Visual>
<Rectangle StrokeThickness="1" Stroke="Green" StrokeDashArray="1 2"
Width="{Binding RelativeSource={RelativeSource AncestorType={x:Type Border}}, Path=ActualWidth}"
Height="{Binding RelativeSource={RelativeSource AncestorType={x:Type Border}}, Path=ActualHeight}"
StrokeDashCap="Square"/>
</VisualBrush.Visual>
</VisualBrush>
</Border.BorderBrush>
</Border>
以某种方式以某种奇怪的方式剪辑边框我无法理解。我认为这将是画笔的绘画方式,但我无法弄清楚任何图案。边框的内部内容(你可以部分看到的红色内容)应该没有裁剪,因为在任何其他情况下它看起来都不会以这种方式剪辑。
如果我将StrokeThickness设置得更高,我看起来更容易接受:
<Border BorderThickness="2,0,2,0" CornerRadius="10,10,10,10">
<Border.BorderBrush>
<VisualBrush>
<VisualBrush.Visual>
<Rectangle StrokeThickness="4" Stroke="Green" StrokeDashArray="1 2"
Width="{Binding RelativeSource={RelativeSource AncestorType={x:Type Border}}, Path=ActualWidth}"
Height="{Binding RelativeSource={RelativeSource AncestorType={x:Type Border}}, Path=ActualHeight}"
StrokeDashCap="Square"/>
</VisualBrush.Visual>
</VisualBrush>
</Border.BorderBrush>
</Border>
有人可以解释为什么这看起来很奇怪吗?如果我为矩形设置不同的宽度或高度,外观也会改变 - 这也是我不理解的方式。笔画和间隙的位置会发生变化,但不能让我理解它。
答案 0 :(得分:1)
这是因为你是通过刷子做的。你看到的实际上是预期的。
@Clemens实际上帮我解释了an issue我前段时间的一个解释,只是通过善意展示一些Doc片段。
画笔使用其输出“绘制”或“填充”某个区域。不同的刷子具有不同类型的输出。有些画笔使用纯色绘制区域,其他画笔使用渐变,图案,图像或绘图。
•VisualBrush:使用Visual对象绘制区域。 VisualBrush使您可以将应用程序的一部分内容复制到另一个区域;它对于创建反射效果和放大屏幕部分非常有用。
因此被“绘制”的区域取决于它所允许的区域,在这种情况下,来自父级面板提供其中的区域result_set = db(db.item.point >= float(min_amount)).select()
,因此我们看到父级提供的可预测模式。
希望这会有所帮助,欢呼。