我想画一个三角形作为边框背景。一种方法是使用DrawingBrush,但是在较小的尺寸下,抗锯齿会扭曲三角形并使其变得模糊。 如何禁用消除锯齿?
<Border>
<Border.Background>
<DrawingBrush>
<DrawingBrush.Drawing>
<GeometryDrawing Brush="Red">
<GeometryDrawing.Geometry>
<PathGeometry>
<PathGeometry.Figures>
<PathFigureCollection>
<PathFigure IsClosed="True" StartPoint="0,3" IsFilled="True">
<PathFigure.Segments>
<LineSegment Point="3,0" />
<LineSegment Point="6,3" />
</PathFigure.Segments>
</PathFigure>
</PathFigureCollection>
</PathGeometry.Figures>
</PathGeometry>
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingBrush.Drawing>
</DrawingBrush>
</Border.Background>
</Border>
我已尝试在所有可能的元素上设置RenderOptions.EdgeMode =“Aliased”和SnapsToDevicePixels =“true”,但这没有用...
修改
这是Width = 17时绘制的三角形的样子;高度= 12(缩放到800%):
正如您所看到的,边缘是消除锯齿的。禁用抗锯齿的所有常用选项似乎都不起作用......
答案 0 :(得分:2)
我对此也非常沮丧。经过一些研究,我找到了答案:使用Visual Brush将可视化集中的Image元素设置为SnapToDevicePixels = true和Aliased Edge Mode。请参阅以下示例:
<Canvas VerticalAlignment="Top" Height="12" Margin="0,24,0,0">
<Canvas.Background>
<VisualBrush TileMode="Tile" Stretch="None" Viewport="-5,0,10,10" ViewportUnits="Absolute">
<VisualBrush.Visual>
<Image Stretch="None" RenderOptions.EdgeMode="Aliased" SnapsToDevicePixels="True">
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing>
<GeometryDrawing>
<GeometryDrawing.Pen>
<Pen Brush="#8F8E8F" Thickness="1" />
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<LineGeometry StartPoint="0,0" EndPoint="0,10"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
</VisualBrush.Visual>
</VisualBrush>
</Canvas.Background>
</Canvas>
答案 1 :(得分:1)
考虑到没有更多的回复,似乎答案是 - 这是不可能的。
答案 2 :(得分:0)
我认为您应该可以使用SnapToDevicePixels(虽然有时需要一些试验和错误)。你应该在拥有对象上设置它(所以不管放入什么边框)。你读过这篇文章了吗? http://msdn.microsoft.com/en-us/library/aa970908.aspx