【发布时间】:2015-02-22 09:09:57
【问题描述】:
在 MouseDownEvent 上,我设置了要绘制的椭圆的左上角。
public MyCircle(Point location)
{
ellipseObject = new Ellipse
{
Stroke = Brushes.Black,
StrokeThickness = 2,
Margin = new Thickness(location.X, location.Y, 0, 0)
};
}
然后在 MouseMoveEvent 上更新 Width 和 Height 属性,只要我不将鼠标移动到 Ellipse 左上角的上方或/和左侧,它就可以正常工作,在这种情况下,我会遇到这些属性的异常不能是负数(这当然很有意义)。
public void Draw(Point location)
{
if (ellipseObject != null)
{
ellipseObject.Width = location.X - ellipseObject.Margin.Left;
ellipseObject.Height = location.Y - ellipseObject.Margin.Top;
}
}
画线不存在问题:
public void Draw(Point location)
{
lineObject.X2 = location.X;
lineObject.Y2 = location.Y;
}
我知道这是微不足道的,但我完全坚持这一点。我应该如何处理绘制椭圆?
【问题讨论】:
-
为什么不使用 Math.Abs 去除负数?
-
这样,Ellipse 的增长方向将与我想要的相反,而不是抛出异常。我需要实现类似 Paint 的功能。