2011-01-28 9 views
3

現在、Silverlightでレイアウトアプリを設計しており、Viewboxの中にCanvasがあります。キャンバスにシェイプを追加し、シェイプを正しく表示します。ビューボックスのサイズを高さと幅の2倍に拡大すると、すべてが正しく描画されます。Viewbox、Silverlightのサイズ変更で描画しない項目

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; 
+0

は、あなたのXAMLコード – danbord

+0

グレートを投稿してください、しかし、そのコードはCanvas.horOffset、Canvas.vertOffsetが動作していないとCanvas.zoomFactorは、キャンバスのプロパティとして存在していません – danbord

+0

ものは、私は私のプログラムで他のものを処理する必要がプロパティである、彼らスクロールビューアの水平スクロールオフセットと垂直スクロールオフセットで置き換えることができます。 Zoomfactorはズームの量に応じて倍率です。私が望むところに位置を設定するだけです。どの項目が再描画されなかったかに関係なく、この問題とは無関係であると私は信じています。 –

答えて

関連する問題