如果查看下面的XAML,它会创建两个矩形。
XAML
<Grid>
<Rectangle Height="80" Width="300" Fill="Maroon"
HorizontalAlignment="Center" VerticalAlignment="Bottom">
</Rectangle>
<Rectangle Height="300" Width="50" Fill="LightSteelBlue"
HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="50,0">
</Rectangle>
<Polygon Fill="LightSteelBlue" Stroke="LightSteelBlue"
HorizontalAlignment="Center" VerticalAlignment="Bottom">
<Polygon.Points>
<Point X="0" Y="300"/>
<Point X="50" Y="300"/>
<Point X="50" Y="0"/>
<Point X="0" Y="0"/>
<Point X="0" Y="300"/>
</Polygon.Points>
</Polygon>
</Grid>
使用非实体边框绘制多边形,即放大图像时,您将看到消除锯齿的边缘。有趣的是,当你绘制一个矩形时,你不会得到这些(左边的矩形,右边的多边形):
Image http://www.barramsoft.com/pub/images/BarBorders2.png
有没有办法用实心/干净边绘制多边形?
答案 0 :(得分:4)
这是一个古老的问题,但如果有人碰巧从谷歌那里获得机会,这里的解决方案对我有用:
将RenderOptions.EdgeMode =“Aliased”添加到您的多边形:
<Polygon ...
RenderOptions.EdgeMode="Aliased">
<Polygon.Points>
...
</Polygon.Points>
</Polygon>
答案 1 :(得分:1)
设置厚度:
StrokeThickness = “10”
此外,您可能需要捕捉设备像素:
SnapsToDevicePixels = “真”
答案 2 :(得分:1)
您看到的半透明度不是由非实体边框或边框造成的,而是边缘不够厚但是反锯齿。
设置SnapsToDevicePixels="True"
无法解决此问题,因为矩形是一个绘图对象,因此您必须use Guidelines
另一种方法是通过将线条放在像素的中间来“修复”:
<Polygon.Points>
<Point X="0.5"
Y="300.5" />
<Point X="50.5"
Y="300.5" />
<Point X="50.5"
Y="0.5" />
<Point X="0.5"
Y="0.5" />
<Point X="0.5"
Y="300.5" />
</Polygon.Points>
当像这样给出坐标时,更容易确定要打开的像素。如果坐标在两个(或更多)像素之间,WPF将为它们全部着色。