鼠标单击画布中的对象(Mouse click object in canvas)

编程入门 行业动态 更新时间:2024-10-25 12:28:31
鼠标单击画布中的对象(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.

更多推荐

本文发布于:2023-08-07 07:08:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1463151.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:鼠标   画布   单击   对象   object

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!