我想制作的节目是这样的:
跟踪右手和该坐标的关节,显示椭圆
我让这个椭圆跟踪我的手。
我想让椭圆的痕迹不消失,因此椭圆可以像画笔工具一样使用 我添加了这个声明,
canvasPaint.Children.Add(ellipse);
但它不起作用。实际上,由于这个声明,程序停止运行 那么,如何在this video中绘制多个椭圆?
我正在开发c#和xaml。
我需要openni吗?有必要吗?
答案 0 :(得分:0)
我自己解决了这个问题:) 出现问题是因为 我没有制作一个新物体,只是添加了一个现有的椭圆。 2.我应该处理Zindex在Kinect视频前打印椭圆。
所以我实现了一个方法drawEllipse,
void drawEllipse(SolidColorBrush c, double x, double y)
{
Ellipse ellipse = new Ellipse()
{
Fill = c,
Height = 30,
Width = 30,
Opacity = 0.5
};
Canvas.SetLeft(ellipse, x);
Canvas.SetTop(ellipse, y);
canvasPaint.Children.Add(ellipse);
}
并处理了Zindex财产。
<Window x:Class="KinectPractice01.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="480" Width="640">
<Grid>
<Image Height="441" Canvas.Left="10" Canvas.Top="0" Width="618" Name="image1" Panel.ZIndex="0"/>
<Canvas Margin="0,0,0,0">
<Canvas Name="canvasPaint" Width="640" Height="480" Margin="90,0,0,0" Panel.ZIndex="1"/>
<TextBox Height="23" Canvas.Left="32" TextWrapping="Wrap" Text="null" Canvas.Top="10" Width="120" Name="textbox1"/>
<Ellipse Opacity="0.5" Fill="White" HorizontalAlignment="Left" Height="30" Stroke="Black" VerticalAlignment="Top" Width="30" Name="ellipse1"/>
<Ellipse Opacity="0.5" Fill="Cyan" HorizontalAlignment="Left" Height="30" Stroke="Black" VerticalAlignment="Top" Width="30" Name="ellipse2"/>
</Canvas>
</Grid>