1
<Image Width="640" Height="480"  Name="ImageControl" Grid.Column="0" Grid.Row="1" />
<Canvas Width="620" Height="480" Name="myCanvas" Grid.Column="0" Grid.Row="1" >
    <Ellipse Width="10" Height="10" Fill="Red" Canvas.Left="610" Canvas.Top="10" Name="Circle1" Canvas.ZIndex="99" />
    <Ellipse Width="10" Height="10" Fill="Red" Canvas.Left="610" Canvas.Top="30" Name="Circle2" />
    <Ellipse Width="10" Height="10" Fill="Red" Canvas.Left="610" Canvas.Top="50" Name="Circle3" />
    <Ellipse Width="10" Height="10" Fill="Red" Canvas.Left="610" Canvas.Top="70" Name="Circle4" />
    <Ellipse Width="10" Height="10" Fill="Red" Canvas.Left="610" Canvas.Top="90" Name="Circle5" />
    <Ellipse Width="10" Height="10" Fill="Red" Canvas.Left="610" Canvas.Top="110" Name="Circle6" />
    <Ellipse Width="10" Height="10" Fill="Red" Canvas.Left="610" Canvas.Top="130" Name="Circle7" />
    <Ellipse Width="10" Height="10" Fill="Red" Canvas.Left="610" Canvas.Top="150" Name="Circle8" />
</Canvas>

グリッドの同じセルにイメージとキャンバスがあります。アイデアは、画像の上に 8 つの赤い楕円を配置することです。画像の提供には Kinect が使用されているため、画像には現在ソースがありません。最初に読み込まれると、画像が読み込まれるまで赤い楕円が一瞬表示され、その後は表示されなくなります。

要素の順序、キャンバスの ZIndex、グリッドの ZIndex を変更しようとしましたが、すべて役に立ちませんでした。

this.ImageControl.Source = BitmapSource.Create(
                imageFrame.Width,
                imageFrame.Height,
                96,
                96,
                PixelFormats.Bgr32,
                null,
                this.pixelData,
                stride);

これは、Kinect ストリーム イメージがイメージ ソースに割り当てられる方法です。

4

2 に答える 2

1

別のイメージソースを使用しようとしましたか?
わたしにはできる。
Windows のサンプル画像の 1 つを使用してみてください。

<Window x:Class="MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="537" Width="721">
  <Grid>
    <Image Width="640" Height="480"  Name="ImageControl" Grid.Column="0" Grid.Row="1" Source="Desert.jpg" />
    <Canvas Width="620" Height="480" Name="myCanvas" Grid.Column="0" Grid.Row="1" >
      <Ellipse Width="10" Height="10" Fill="Red" Canvas.Left="610" Canvas.Top="10" Name="Circle1" Canvas.ZIndex="99" />
      <Ellipse Width="10" Height="10" Fill="Red" Canvas.Left="610" Canvas.Top="30" Name="Circle2" />
      <Ellipse Width="10" Height="10" Fill="Red" Canvas.Left="610" Canvas.Top="50" Name="Circle3" />
      <Ellipse Width="10" Height="10" Fill="Red" Canvas.Left="610" Canvas.Top="70" Name="Circle4" />
      <Ellipse Width="10" Height="10" Fill="Red" Canvas.Left="610" Canvas.Top="90" Name="Circle5" />
      <Ellipse Width="10" Height="10" Fill="Red" Canvas.Left="610" Canvas.Top="110" Name="Circle6" />
      <Ellipse Width="10" Height="10" Fill="Red" Canvas.Left="610" Canvas.Top="130" Name="Circle7" />
      <Ellipse Width="10" Height="10" Fill="Red" Canvas.Left="610" Canvas.Top="150" Name="Circle8" />
    </Canvas>
  </Grid>
</Window>
于 2013-08-14T11:42:51.887 に答える
1

私は自分のコードでこれを頭に入れていることがわかりました

myCanvas.Children.Clear();

これは、キャンバスに描画されたライン スケルトンが不要になったときにクリアし、楕円も削除していました。

于 2013-08-14T12:40:03.973 に答える