【发布时间】:2011-12-24 01:18:38
【问题描述】:
我正在使用 WPF 创建一个简单的绘图应用程序。在画布控件上使用 mouse_up 事件时,我遇到了一些奇怪的行为。
我想要的效果是当用户在画布上点击然后拖动鼠标时,选择的形状会变大。当用户释放鼠标按钮时,形状保持原样。我让它在椭圆上工作得很好,如下所示:
//Calculate width and height based on difference from start and current mouse positions
int width = currentXPosition < StartXPosition ? StartXPosition - currentXPosition : currentXPosition - StartXPosition;
int height = currentYPosition < StartYPosition ? StartYPosition - currentYPosition : currentYPosition - StartYPosition;
StandardEllipse ellipse = new StandardEllipse
{
Fill = new SolidColorBrush(Colors.Blue),
Stroke = new SolidColorBrush(Colors.Blue),
StrokeThickness = 2,
Width = width,
Height = height
};
//Calculate and set the starting positions of the ellipse for the drawing canvas
int left = currentXPosition < StartXPosition ? currentXPosition : StartXPosition;
int top = currentYPosition < StartYPosition ? currentYPosition : StartYPosition;
Canvas.SetLeft(ellipse, left);
Canvas.SetTop(ellipse, top);
return ellipse;
但是,当我尝试使用矩形时,使用与上面完全相同的代码,除了将形状设置为矩形之外,鼠标向上事件偶尔会触发,我必须多次单击鼠标按钮直到它触发事件.
我不确定 mouse_move 和 mouse_up 事件之间是否存在冲突,但除了返回一个矩形而不是椭圆之外,我看不出所有其他代码是如何完全相同的。有人有什么想法吗?
编辑:我认为这可能是因为当我绘制矩形时,鼠标严格位于形状的边缘,所以我尝试将宽度和高度设置为 99%,现在似乎可以正常工作!如果有人有任何见解,那么我将不胜感激。
【问题讨论】: