【问题标题】:Items not drawing on Resize of Viewbox, Silverlight未在调整 Viewbox、Silverlight 的大小上绘制的项目
【发布时间】:2011-03-10 12:27:58
【问题描述】:

我目前正在 Silverlight 中设计一个布局应用程序,并且在 Viewbox 内有一个 Canvas。我在画布上添加了形状,它们可以正常显示,当我调整视图框的大小以放大 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;

【问题讨论】:

  • 很好,但该代码无法正常工作 Canvas.horOffset、Canvas.vertOffset 和 Canvas.zoomFactor 不作为画布属性存在
  • 这些是我必须在我的程序中处理其他事情的属性,它们可以替换为滚动查看器的水平和垂直滚动偏移量。 Zoomfactor 是乘法的,具体取决于缩放量。只是将位置设置为我想要的位置,我认为这与这个问题无关,因为该位置似乎与哪些项目没有重绘无关。
  • 您是否考虑过在画布上进行比例变换而不是视图框?
  • 我没有,与视图框相比,这有什么优势,似乎比仅使用简单的视图框需要进行更多的计算?

标签: silverlight canvas redraw viewbox


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-20
    • 1970-01-01
    • 2018-08-29
    • 1970-01-01
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    相关资源
    最近更新 更多