我有一种在鼠标单击时在画布上绘制节点(椭圆)的方法,然后当点击其中一个节点时,一个方法根据该节点进行一些计算' sx,y并放置一个图像我放在代码中的文件路径。我试图这样做,当我点击另一个节点时,图像的位置会根据新节点的x,y进行更新。我尝试执行此处列出的内容Draw rectangle and update it on every mouse click,但它没有删除最后一张图片。
这是我点击按钮的方法 -
private void FindROVButton_Click(object sender, RoutedEventArgs e)
{
if (SelectedNode != null) // SelectedNode is the currently clicked node
{
if (System.Windows.MessageBox.Show("Calculate ROV location from \"" + SelectedNode.Name + "\"?", "Calculate ROV Location", MessageBoxButton.YesNoCancel, MessageBoxImage.Warning) == MessageBoxResult.Yes)
{
Point rovPosition = new Point();
rovPosition = calculateROV_position(SelectedNode.X, SelectedNode.Y, SelectedNode.Range, SelectedNode.Bearing);
Image rov = new Image();
rov.Source = new BitmapImage(new Uri("C:\\Pic\\Example.png"));
rov.Width = 30;
rov.Height = 30;
Canvas.SetLeft(rov, (rovPosition.X - (rov.Width / 2.0)));
Canvas.SetTop(rov, (rovPosition.Y - (rov.Height / 2.0)));
canvas1.Children.Add(rov);
}
}
}
在将新的rov放置在画布上之前的任何地方调用canvas1.Children.Remove(rov)都不起作用。它总是在画布上添加一个新的。我猜它与所选节点的所有事实有关。
答案 0 :(得分:0)
想出来。我需要先在方法之前创建新的Image,然后在canvas1.Children.Add(rov)之前的方法中使用canvas1.Children.Remove(rov)。
Image rov = new Image();
private void FindROVButton_Click(object sender, RoutedEventArgs e)
{
if (SelectedNode != null)
{
if (System.Windows.MessageBox.Show("Calculate ROV location from \"" + SelectedNode.Name + "\"?", "Calculate ROV Location", MessageBoxButton.YesNoCancel, MessageBoxImage.Warning) == MessageBoxResult.Yes)
{
Point rovPosition = new Point();
rovPosition = calculateROV_position(SelectedNode.X, SelectedNode.Y, SelectedNode.Range, SelectedNode.Bearing);
rov.Source = new BitmapImage(new Uri("D:\\Dev\\trunk\\Software\\Nav Assist\\Data\\Hull Cleaner Tiny Image.png"));
canvas1.Children.Remove(rov);
rov.Width = 30;
rov.Height = 30;
Canvas.SetLeft(rov, (rovPosition.X - (rov.Width / 2.0)));
Canvas.SetTop(rov, (rovPosition.Y - (rov.Height / 2.0)));
canvas1.Children.Add(rov);
}
}
}
上面的代码工作正常。