【发布时间】:2015-10-10 09:12:55
【问题描述】:
我是 WPF 的新手,正在做 MyPaint 应用程序。 当我在画布上画一个圆或一个正方形时,当我沿着 Oy 轴移动鼠标时,它们会跟随我的鼠标。 我不知道如何解决这个问题。 这里是。 感谢阅读。
Point p1, p2;
Point currClick;
//int i = 0;
//private bool flag = true;
Rectangle Myline;
SolidColorBrush scb = new SolidColorBrush(Colors.Black);
private void MyCanvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
p1 = e.GetPosition(MyCanvas);
Myline = new Rectangle();
Myline.Stroke = scb;
Myline.StrokeThickness = 1;
DoubleCollection Mydash = new DoubleCollection { 5, 3 };
Myline.StrokeDashArray = Mydash;
Canvas.SetLeft(Myline, p1.X);
Canvas.SetTop(Myline, p1.Y);
//Myline.Fill = scb;
MyCanvas.Children.Add(Myline);
}
private void MyCanvas_MouseMove_1(object sender, System.Windows.Input.MouseEventArgs e)
{
if (e.LeftButton == MouseButtonState.Released)
{
return;
}
else
{
Myline.Width = Math.Max(p2.X, p1.X) - Math.Min(p2.X, p1.X);
Myline.Height = Myline.Width;
Canvas.SetLeft(Myline, Math.Min(p1.X, p2.X));
Canvas.SetTop(Myline, Math.Min(p1.Y, p2.Y));
}
}
【问题讨论】:
-
您在哪里创建和设置 Myline、p1 和 p2?
-
请参阅this answer,了解如何在画布中绘制形状。
-
谢谢两位,我试试看
-
在
if (e.LeftButton == MouseButtonState.Released)之前添加p2 = e.GetPosition(MyCanvas); -
@mitli 它也不起作用。我意识到当 p2.Y >= p1.Y 时,形状会跟随鼠标。