2011-01-19 29 views
1

inkcanvasの幅と高さを画面に合わせてサイズを変更したいと考えています。サイズを変更すると、幅が右に拡大され、高さが下に拡大されます。しかし、inkcanvasはスクリーンに合っていません。inkcanvasを左上に調整する

私はまた、inkcanvas子要素の位置を修正したいと思います。画面に合わせてinkcanvasのサイズを変更できる場合、inkcanvasの子要素の位置は変更されません。

画面に合わせてインクキャンバスのサイズを左上と上端に変更するにはどうすればよいですか?

alt text

<Canvas x:Name="Screen" > 

       <InkCanvas Name="inkcanvas" ResizeEnabled="True" 
          Width="{Binding ElementName=LayoutRoot, Path=ActualWidth}" 
         Height="{Binding ElementName=LayoutRoot, Path=ActualHeight}" 
          EditingMode="Select" ClipToBounds="False" 
        Background="Bisque" 
        SelectionChanging="OnSelectionChanging" 
        Visibility="Collapsed" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 

        <!-- InkCanvas' Child Elements --> 
       </InkCanvas> 
       <Canvas.RenderTransform> 
        <MatrixTransform/> 
       </Canvas.RenderTransform> 
      </Canvas> 

おかげ

更新: を私は、グリッドにinkcanvasを置​​きます。画面にフィットしますが、子要素の位置が変更されます。

赤い矩形の位置を修正したいと思います。

赤い矩形の位置は変更しないでください。

<Grid> 
     <InkCanvas x:Name="inkcanvas" Background="Transparent"> 
      <Rectangle Height="41" HorizontalAlignment="Left" Name="rectangle1" Stroke="Black" VerticalAlignment="Top" Width="69" Fill="#FFDB1111" /> 
     </InkCanvas> 
     </Grid> 

alt textマイビッグpicure:

私のWPFアプリケーションは、多くの写真が含まれています。私はキャンバスを拡大/縮小できます。選択ツールを使用して画像を選択できます。

私はキャンバスとインクキャンバスを持っています。

  • キャンバス:/アウト

  • inkcanvasに絵やズームが含まれています。私はズームアウトした場合は、選択ツール

は、キャンバスとinkcanvasが小さくなっています。

選択ツールを使用すると、すべての画像をキャンバスからinkcanvasにコピーします。

しかし、inkcanvasがズームアウトされているため、inkcanvas境界外にある場合は選択ツールを使用できません。

私はinkcanvasのサイズを変更し、子供の位置を固定したいのです。

+0

私たちにあなたのxamlを教えてください。私たちはあなたに何を変更するかを示します。 –

+0

高さと幅をlayoutrootにバインドするのはなぜですか?グリッドは自動的にその子のサイズを最大にします。あなたが望むものについてもっと教えてください。 InkCanvasの子供たちを修正することはどういう意味ですか?キャンバスまたは画面に修正しますか?あなたが達成しようとしている効果は何ですか? –

答えて

0

inkcanvasからすべての余白を削除し、グリッドに配置します。

なぜこれがうまくいかないのか説明できますか?

<Grid> 
    <InkCanvas> 
    ... 
    </InkCanvas> 
</Grid> 

編集ことがある子要素に保つには、2つの方法があります。

  1. とすぐにポジションや変更がそれに応じて子位置を調整InkCanvasの大きさとしては。これは、あなたが固定位置(ウィンドウtopleft、画面topleft、を選択する必要があることを意味...これは子供の実際の位置を決定します。
  2. InkCanvasから子を削除し、正しいコンテナ(子の位置を決定する一つにそれを置く。

であるように私は#2を好むより論理的で、少ない計算/イベント処理

が必要です
+0

余白を取り除いてグリッドに置くと、inkcanvasの子要素の位置が変わります。しかし、私はinkcanvasの子要素の位置を修正したい。 –

+0

あなたはそれを配置したいと思うように聞こえ、同時にそれを配置したくないので、それよりもはっきりしなければなりません。あなたが探している行動を正確に教えてください。 –

+0

私の更新を見てください。 –

0

これは、InkCanvasの周りのコンテナによって異なります。また、コンテナを混乱させると子要素が動かないとは思いません。子要素がInkCanvasとは独立して動作する必要がある場合は、良いアイデアと、達成したいことが別の設定を使用して効率的に実行できない場合。

子供たちがコンテナの操作によって影響を受けることが予想され一般的に求められているという事実を、あなたが達成したいことの大きなものが何であるかについてもっと教えてください。たぶん、コンテナのサイズを変更しようとするよりも、すべての子供をそのような操作を無効にするために移動させなければならないよりも優れたアプローチがあります。

+0

私はinkcanvasの子供たちがたくさんいます。私はすべての子供をシフトすると、パフォーマンスが遅くなると思います。あなたは他の承認を持っていますか? –

関連する問題