我尝试根据鼠标移动在画布上绘制椭圆。 我使用鼠标移动事件并获取鼠标点位置X和Y,并在画布内的新位置找到elippse。所有这一切都很完美,我得到了非常光滑的椭圆运动。
但是,如果我改变了我所获得的位置的价值(见下面的代码)。向下移动鼠标时,我的smoth问题非常严重。椭圆大约是椭圆大小的大小。 只有当值大约是椭圆大小时,它才会变亮; 我猜这是由于画布中的旧椭圆(有点:椭圆跳过它自己)。 这是我的代码:
private void MainArea_MouseMove(object sender, MouseEventArgs e)
{
Point position = e.GetPosition( canvas);
//position.X -= 15 ; // this line couse the problem
Canvas.SetLeft(PlayerEllipse, position.X);
Canvas.SetTop(PlayerEllipse, position.Y);
}
寻找解决方案
答案 0 :(得分:0)
解决了 - 我发现我还需要再构建一个MouseMove处理程序。对于椭圆本身。 当我的鼠标在椭圆上时,事件与椭圆相关,而不是与容器MainArea相关。见下文
myEllipse.MouseMove += new MouseEventHandler(myEllipse_MouseMove);
private void myEllipse_MouseMove(object sender, MouseEventArgs e)
{
MainArea_MouseMove(sender, e);
}