【发布时间】:2017-11-19 00:01:07
【问题描述】:
我一直在寻找一种解决方案,以透明地向 WPF 图像控件添加平移和缩放功能,我找到了由 Wiesław Šoltés 和 Konrad Viltersten 开发的解决方案 https://stackoverflow.com/a/6782715/584180,非常出色。
现在我想在控件中添加一个“鼠标点击”事件,这样我就可以在原始图像坐标系中获得点击点的坐标,这样我就可以使用它们来检索像素颜色。
我知道会有一些舍入,如果图像被缩小,颜色将与屏幕上显示的实际颜色不对应。我也理解用户可能会在图像边界之外点击,在这种情况下,我希望返回一个空点或负坐标。
我不是 C# 转换方式的专家,目前我对此感到困惑(将添加到 ZoomBorder.cs 类中):
public Point GetImageCoordsAt(MouseButtonEventArgs e)
{
if (child != null)
{
var tt = GetTranslateTransform(child);
var mousePos = e.GetPosition(this);
var transformOrigin = new Point(tt.X, tt.Y);
return mousePos; // Wrong: how do I transform this?
}
return null;
}
【问题讨论】:
-
如果要获取相对于图像的坐标,则将图像的引用传递给 GetPosition 方法: var mousePos = e.GetPosition(theImage);这是你想要的吗?
-
您的意思是图像控件会负责将屏幕位置映射到图像位置?图片可能已被缩放和翻译。
-
如果您希望有人能够帮助您,您可能应该澄清您的要求。您可以先更改问题的标题,因为这似乎与您的实际问题无关...?