2016-06-30 1 views
0

以下の機能を実装したいと思います。WPFキャンバスで子の相対位置を維持する

私は内部にいくつかのUIElementsを持つキャンバスを持っています。キャンバスを使用すると、縮尺を適用したり、変換を変換したりすることができます。

enter image description here

私は、私はズームやスクロールを変更するように、浮動制御を動作するように、同じ位置(キャンバスの左下隅)には常に赤い四角を維持するために、赤い四角をしたいと思います常にサイズと位置を維持します。マップ「地球ウィンドウ」をGoogleに似た何か:

enter image description here

それを実装するための最良の方法は何ですか?

注:WPF adorner layerを使用しようとしましたが、マウスイベントに応答せず、赤い四角形で対話する必要があります。

+0

別のパネル(たとえば、グリッド)をキャンバスの上に置き、そこに矩形を追加します。 – Clemens

答えて

1

クレメンスは言ったように、それを別の層の上に置きます。グリッドは同じセル内に複数のアイテムをホストできるため、キャンバスの1×1グリッドを作成して他のWPFレイアウトと同様に上部にコンテンツを追加します。 (Z層が指定されていない限り)以降の項目が一番上に表示されます。

<Grid> 
    <Canvas> 
     ... do all my fancy drawing 
    </Canvas> 
    <Rectangle VerticalAlignment="Bottom" HorizontalAlignment="Left" Width="100" Height="100" /> 
</Grid> 

注キャンバスは、ビデオや埋め込みWindowsFormsコンテンツとして任意の非WPFのレンダリングを、持っている場合は、問題が発生する場合があります。私は人々がそれの上にWPFのものを描くことに問題があることを見てきました。

また、Canvas.Bottom="20"に、下端からの相対的な位置を設定することもできますが、これは決して使用したことはありません。

関連する問題