【发布时间】:2019-11-27 12:33:52
【问题描述】:
当滚轮移动时,我正在尝试从画布上的图像中心到鼠标位置绘制一条线。
我有一个看起来像这样的函数:
// e is MouseWheelEventArgs
var position = e.GetPosition(canvas);
var x = Canvas.GetLeft(image) + image.ActualWidth / 2;
var y = Canvas.GetTop(image) + image.ActualHeight / 2;
Ellipse point = new Ellipse
{
Margin = new Thickness(x, y, 0, 0)
};
Line line = new Line
{
X1 = position.X,
Y1 = position.Y,
X2 = x,
Y2 = y
};
canvas.Children.Add(point);
canvas.Children.Add(line);
点在指针的位置正确绘制,线是从图像中心绘制的,但线绘制到的点不正确。这是为什么呢?
【问题讨论】:
-
不要使用边距来定位画布中的元素。请改用 SetLeft 和 SetTop。为了绘制一个中心圆,要么将 Ellipse's Margin 设置为其半径的负数,要么使用带有 EllipseGeometry 的 Path。