【发布时间】:2015-12-31 08:02:42
【问题描述】:
我正在尝试使用 Canvas 在 WPF 中创建一个绘画应用程序。我想在绘图时增加形状的厚度,所以我尝试增加 StrokeThickness。
这就是我想要的样子:
这就是我得到的:
如您所见,轮廓仅在边界内延伸。我怎样才能让它在两边都延伸?
这是我的代码:
在 MouseDown 事件中:
Rectangle rect = new Rectangle();
rect.Stroke = _color;
rect.StrokeThickness = _size;
Canvas.SetLeft(rect, _startPoint.X);
Canvas.SetTop(rect, _startPoint.Y);
cv_PaintBoard.Children.Add(rect);
isDrawing = true;
在 MouseMove 事件中:
if (isDrawing == true && e.LeftButton == MouseButtonState.Pressed)
{
Canvas canvas = (Canvas)sender;
Rectangle rect = canvas.Children.OfType<Rectangle>().LastOrDefault();
if (rect != null)
{
Point endPoint = e.GetPosition((IInputElement)sender);
Point startPoint = new Point(
Math.Min(endPoint.X, _startPoint.X),
Math.Min(endPoint.Y, _startPoint.Y)
);
rect.Width = Math.Max(endPoint.X, _startPoint.X) - startPoint.X;
rect.Height = Math.Max(endPoint.Y, _startPoint.Y) - startPoint.Y;
Canvas.SetLeft(rect, startPoint.X);
Canvas.SetTop(rect, startPoint.Y);
}
}
【问题讨论】:
-
如何向人们展示相关代码而不是让他们猜测
-
看起来您可以尝试创建一些帮助方法来更新
StrokeThickness,其中不仅更新了StrokeThickness,还更新了Width和Height。