我正在寻找一种方法,在 WPF Image 控件中透明地添加平移和缩放功能,并且我已经发现了这个解决方案https://dev59.com/ynRB5IYBdhLWcg3wCjcV#6782715,由Wiesław Šoltés和Konrad Viltersten开发,非常出色。
现在我想将“鼠标单击”事件添加到控件中,以便我可以获取原始图像坐标系中单击点的坐标,以便我可以使用它们来检索像素颜色。
我知道会有一些四舍五入和如果图像缩小,则颜色将不对应于实际显示在屏幕上的颜色。 我也明白用户可能会在图像边界外单击,在这种情况下,我希望返回一个空点或负坐标。
我不是 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;
}