3

現在、Silverlightでレイアウトアプリを設計しており、Canvas内部にがありViewboxます。キャンバスに図形を追加すると、それらが正しく表示されます。ビューボックスのサイズを変更して高さと幅の2倍にズームインしても、すべてが正しく描画されます。

4問題は、1倍以上または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 に答える