没有在Viewbox,Silverlight的Resize上绘制的项目

时间:2011-01-28 14:51:22

标签: silverlight canvas redraw viewbox

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

1 个答案:

答案 0 :(得分:0)

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