鼠标单击画布中的对象(Mouse click object in canvas)
我有简单的应用程序,绘制椭圆,线条和矩形。
码:
private void Canvas_MouseDown(object sender, MouseButtonEventArgs e) { startPoint = e.GetPosition(canvas); if(figura == "linia") { linia = new Line { Stroke = Brushes.LightBlue, StrokeThickness = 2 }; canvas.Children.Add(linia); } if (figura == "kwadrat") { rect = new Rectangle { Stroke = Brushes.LightBlue, StrokeThickness = 2 }; Canvas.SetLeft(rect, startPoint.X); Canvas.SetTop(rect, startPoint.X); canvas.Children.Add(rect); } else if (figura == "kolko") { circ = new Ellipse { Stroke = Brushes.LightBlue, StrokeThickness = 2 }; Canvas.SetLeft(circ, startPoint.X); Canvas.SetTop(circ, startPoint.X); canvas.Children.Add(circ); } } private void Canvas_MouseMove(object sender, MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Released || rect == null && circ == null && linia == null) return; var pos = e.GetPosition(canvas); var x = Math.Min(pos.X, startPoint.X); var y = Math.Min(pos.Y, startPoint.Y); var w = Math.Max(pos.X, startPoint.X) - x; var h = Math.Max(pos.Y, startPoint.Y) - y; if(figura == "linia") { linia.X1 = startPoint.X; linia.Y1 = startPoint.Y; linia.X2 = pos.X; linia.Y2 = pos.Y; } if (figura == "kwadrat") { rect.Width = w; rect.Height = h; Canvas.SetLeft(rect, x); Canvas.SetTop(rect, y); } if (figura == "kolko") { circ.Width = w; circ.Height = h; Canvas.SetLeft(circ, x); Canvas.SetTop(circ, y); } } private void Canvas_MouseUp(object sender, MouseButtonEventArgs e) { rect = null; circ = null; }现在我想用像调整大小,移动等对象做一些事情。当它们被鼠标点击时。 我不知道我怎么能找到被鼠标点击的对象。 你能帮助我吗 ?
I have simple application that drawing Ellipse, lines, and rectangles.
Code:
private void Canvas_MouseDown(object sender, MouseButtonEventArgs e) { startPoint = e.GetPosition(canvas); if(figura == "linia") { linia = new Line { Stroke = Brushes.LightBlue, StrokeThickness = 2 }; canvas.Children.Add(linia); } if (figura == "kwadrat") { rect = new Rectangle { Stroke = Brushes.LightBlue, StrokeThickness = 2 }; Canvas.SetLeft(rect, startPoint.X); Canvas.SetTop(rect, startPoint.X); canvas.Children.Add(rect); } else if (figura == "kolko") { circ = new Ellipse { Stroke = Brushes.LightBlue, StrokeThickness = 2 }; Canvas.SetLeft(circ, startPoint.X); Canvas.SetTop(circ, startPoint.X); canvas.Children.Add(circ); } } private void Canvas_MouseMove(object sender, MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Released || rect == null && circ == null && linia == null) return; var pos = e.GetPosition(canvas); var x = Math.Min(pos.X, startPoint.X); var y = Math.Min(pos.Y, startPoint.Y); var w = Math.Max(pos.X, startPoint.X) - x; var h = Math.Max(pos.Y, startPoint.Y) - y; if(figura == "linia") { linia.X1 = startPoint.X; linia.Y1 = startPoint.Y; linia.X2 = pos.X; linia.Y2 = pos.Y; } if (figura == "kwadrat") { rect.Width = w; rect.Height = h; Canvas.SetLeft(rect, x); Canvas.SetTop(rect, y); } if (figura == "kolko") { circ.Width = w; circ.Height = h; Canvas.SetLeft(circ, x); Canvas.SetTop(circ, y); } } private void Canvas_MouseUp(object sender, MouseButtonEventArgs e) { rect = null; circ = null; }Now i want to do something with object like resize, move etc. When they are clicked by mouse. I dont know how i can find object that was clicked by mouse. Can you help me ?
最满意答案
e.OriginalSource将为您提供实际点击的控件。
e.OriginalSource will get you the control that was actually clicked.
更多推荐
发布评论