我想在WPF中无缝地平铺一堆不同颜色的矩形。也就是说,我想把一堆矩形边对边放,而且它们之间没有空隙。在WPF中无缝平铺矩形
如果一切都与像素对齐,这工作正常。但我也想支持任意缩放,理想情况下,我不想使用SnapsToDevicePixels(因为当图像放大时会影响质量)。但这意味着我的矩形有时会以缺口呈现。例如:
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Background="Black">
<Canvas SnapsToDevicePixels="False">
<Canvas.RenderTransform>
<ScaleTransform ScaleX="0.5" ScaleY="0.5"/>
</Canvas.RenderTransform>
<Rectangle Canvas.Left="25" Width="100" Height="100" Fill="#CFC"/>
<Rectangle Canvas.Left="125" Width="100" Height="100" Fill="#CCF"/>
</Canvas>
</Page>
如果ScaleTransform的的ScaleX是1,则该矩形装配在一起无缝连接。当它为0.5时,它们之间有一条暗灰色的条纹。我明白为什么 - 组合的半透明边缘像素不会100%不透明。但我想要一个方法来解决它。
我总是可以让矩形重叠,但我不会总是事先知道他们将会在什么样的模式下(这是为了最终支持地图编辑器的游戏)。此外,当物体被放大时,这会在重叠区域造成伪影在(除非我在重叠部分做了斜切角度,这是一项非常多的工作,并且仍然在拐角处导致问题)。
有没有什么办法可以将这些矩形组合成一个组合的“形状”,它没有内部间隙?我玩过GeometryDrawing,它完全是这样,但是我没有看到用不同颜色的笔刷绘制每个RectangleGeometry的方法。
是否有任何其他方法可以在任意变换下无缝地平铺形状,而不诉诸于SnapsToDevicePixels?
由于我有完全相同的问题,我想问你是否找到了解决方案。 – Jens 2010-05-27 10:52:31