現在、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;