0

いくつかの形状を動的に追加したCanvasがあります。Imageキャンバスの上にオーバーを追加したいと思います。

Imageを追加すると、すべて正常に機能しますCanvasが、を追加しようとするとImageCanvas画像が表示されません。多分それはに描かれたシェイプの後ろに隠されていCanvasます。

私の質問は、どうすればをImage前に持ってくることができるかということCanvasです。

これは私が画像を追加する方法です:

string strUri2 = String.Format(@"pack://application:,,,/MyFirstWPF;component/Images/tt.jpg");
image1.Source = new BitmapImage(new Uri(strUri2));

注->画像を追加する前に、キャンバス上の形状が追加されます。

4

3 に答える 3

2

これは2つの方法で実行できます。

  • のZインデックスを変更して、ImageのZオーダーの前面に表示します。Canvas
  • Canvasを要素でオーバーレイできるコンテナを使用しますImage(例Grid:)

CanvasでZ-Indexメソッドを使用する場合、それを適切に行うには、Canvas上の他の要素のZ-Indexに注意する必要があります。...より大きなZ-Index値を選択する必要があるためです。ほかのすべて。

推測して、他の要素が到達することはないと思われる大きなZ-Indexを選択するか、Canvasの子をスキャンして、使用されている最高のZ-Indexを見つけることができます。これにより、いつでも設定できます。高い方....画像を「前面に表示」できるようにします。


(これは、「キャンバス外」と言ったときに使用していたものとおそらく同じです)

別の方法があります。つまり、Zインデックスを明示的に気にする必要はなく、グリッドを使用してキャンバスと画像を子として指定するだけです...これらは同じセルを占有するため、互いに重なります...最後の子である画像は、最大の暗黙のZインデックスを持ちます。

<Grid>
    <Canvas x:Name="mycanvas"/>
    <Image x:Name="image1/>
</Grid>
于 2012-08-19T09:08:54.163 に答える
1

単に使用する

myCanvas.Children.Insert(0,image1);
于 2012-08-19T09:14:07.113 に答える
0

画像のを他の形状よりも高く設定して、z-indexこのような他の形状の上に表示することができます-Canvas.SetZIndex(image1, (int)5);

z-indexの詳細については、これらのリンクを参照してください-Zオーダーの制御CanvasのZインデックス

于 2012-08-19T07:41:33.270 に答える