我有一个WPF应用程序。有一块帆布。当用户将鼠标拖到画布上时(从鼠标向下鼠标向上),我画线。我用初始点,当用户按下鼠标时最后一点,当用户按下鼠标时。然后我计算距离并用简单的鼠标向下,移动和向上事件画线。
在画布上画出很多行后,我点击任意一行。我想选择该行并向用户显示该行被选中(例如通过更改该行的颜色)。所以用户可以删除它。
感谢。
答案 0 :(得分:4)
这是一个有效的例子:(实施Bala在评论中提出的建议)
private void myCanvas_Loaded(object sender, RoutedEventArgs e)
{
Line line = new Line();
line.MouseDown += new MouseButtonEventHandler(line_MouseDown);
line.MouseUp += new MouseButtonEventHandler(line_MouseUp);
line.Stroke = Brushes.Black;
line.StrokeThickness = 2;
line.X1 = 30; line.X2 = 80;
line.Y1 = 30; line.Y2 = 30;
myCanvas.Children.Add(line);
}
void line_MouseUp(object sender, MouseButtonEventArgs e)
{
// Change line colour back to normal
((Line)sender).Stroke = Brushes.Black;
}
void line_MouseDown(object sender, MouseButtonEventArgs e)
{
// Change line Colour to something
((Line)sender).Stroke = Brushes.Red;
}
考虑到你已经有了将线条添加到画布中的逻辑,
只需为您添加的每一行添加两个事件处理程序(如上所述)。
答案 1 :(得分:0)
答案 2 :(得分:0)
我建议您在画布中添加自定义MouseDown事件处理程序。实际上,如果您的线条非常薄,您需要让用户能够在一条线附近点击以选择它。
为此,在您的自定义MouseDown处理程序中,遍历您的行并执行以下操作:
对于每一行: