1

画面に合わせてインクキャンバスの幅と高さを変更したい。サイズを変更すると、幅が右に、高さが下に拡張されます。しかし、inkcanvas は画面に収まりません。

また、inkcanvas 子要素の位置を修正したいと考えています。画面に合わせてinkcanvasのサイズを変更できれば、inkcanvas子要素の位置は変わりません。

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

代替テキスト

<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>

ありがとう

更新: インクキャンバスをグリッドに配置しました。画面に収まりますが、子要素の位置がずれています。

赤い長方形の位置を修正したい。 代替テキスト

赤い長方形の位置は変更しないでください。 代替テキスト

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

私の全体像:

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

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

  • キャンバス: 画像を含み、拡大/縮小します

  • inkcanvas: 選択ツールあり

ズームアウトすると、キャンバスとインクキャンバスが小さくなります。

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

しかし、インクキャンバスはズームアウトしているため、インクキャンバスの境界外では選択ツールを使用できません。

これが、インクキャンバスのサイズを変更して子の位置を修正したい理由です。

4

3 に答える 3

0

インクキャンバスからすべての余白を削除し、グリッドに配置します。

これがうまくいかない理由を説明していただけますか?

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

編集子要素を現在の場所に保持する方法は2つあります

  1. InkCanvasの位置またはサイズが変更されるとすぐに、それに応じて子の位置を調整します。これは、子の実際の位置を決定する固定位置(ウィンドウの左上、画面の左上など)を選択する必要があることを意味します。
  2. InkCanvasから子を取り出し、正しいコンテナ(子の位置を決定するコンテナ)に入れます。

より論理的で、計算やイベント処理が少なくて済むので、#2をお勧めします。

于 2011-01-19T07:16:51.517 に答える
0

これは、InkCanvas の周りのコンテナーによって異なります。さらに、コンテナをいじった場合、子要素が動かないことは期待できません。子要素を InkCanvas とは独立して動作させる必要がある場合は、それが良いアイデアであるかどうか、別のセットアップを使用して達成したいことがより効率的に実行できないかどうかを再考することをお勧めします。

達成したいことの全体像についてもっと詳しく教えてください。コンテナの操作によって子供が影響を受けることが予想され、一般的に望まれています。おそらく、コンテナーを試してスケーリングし、同時にすべての子をシフトしてそのような操作を無効にするよりも良いアプローチがあるでしょう。

于 2011-01-19T07:41:44.230 に答える