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 中的示例图片之一。

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