我目前正在 Silverlight 中设计一个布局应用程序,并且有Canvas
一个Viewbox
. 我在画布上添加了形状并且它们正确显示,当我调整视图框的大小以放大 2 倍高度和宽度时,一切仍然正确绘制。
当我尝试放大一个4
或更大的因子或0.5
(缩小)时,问题就出现了。
更新:水平线仍然存在,只是没有绘制。其他形状和消失的形状之间的相互作用仍然存在
当我这样做时,任何水平线都不会重绘,但任何其他形状,其他的垂直线,仍然可以重绘。这些对象仍然是画布的子对象,它们的可见性都设置为可见。
怎么了?
更新
非常简单的 XAML:
<ScrollViewer x:Name="scrollViewer"
Padding="0"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
IsTabStop="False"
Background="Beige">
<Viewbox x:Name="viewBox" Stretch="UniformToFill">
<Canvas x:Name="designCanvas"
Background="{Binding ElementName=mainControl, Path=Background, Mode=TwoWay}">
</Canvas>
</Viewbox>
</ScrollViewer>
这是我添加形状的方法:
Rectangle horGuide = new Rectangle()
{
Tag = "horGuide",
Fill = new SolidColorBrush(Colors.Cyan),
Height = 0.5,
Width = designCanvas.canvActualWidth*16,
};
int h = designCanvas.horOffset;
int v = designCanvas.vertOffset;
double d = e.GetPosition(sideRule).Y;
designCanvas.Children.Add(horGuide);
Canvas.SetTop(horGuide, ((d+v )/ designCanvas.zoomFactor));
Canvas.SetLeft(horGuide, 0 - h);
放大:
viewBox.Width *= 2;
viewBox.Height *= 2;