3

我目前正在 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;
4

1 回答 1

0

为什么不使用ScaleTransform类来放大和缩小。

于 2011-03-10T04:27:58.203 回答