完成画布缩放时调用函数

时间:2011-11-13 09:26:06

标签: c# wpf user-controls location zoom

我的UserControl包含Canvas。 Canvas可以平移和正确放大和缩小。我还保留了一个小的用户控件,用一个小矩形显示大用户控件的内容,向用户显示他当前正在查看的内容(每当用户平移/放大主用户控件时,该矩形的大小/位置都会更新)

一切正常但除了一件事 - 当我使用鼠标滚轮放大或缩小时,小参考矩形的位置会更新到错误的位置,当我平移画布时,显示正确的位置。我通过在主用户控件中获取画布的0,0点并将其转换为屏幕上的点来计算参考矩形的位置。这是我的代码:

public Point GetTopLeftOffset()
{
  Point topLeft = PointToScreen(new Point(0, 0));
  return m_mainCanvas.PointFromScreen(topLeft);
}

我的想法是在实际完成缩放时调用上面的函数。我怀疑代码在缩放仍在执行时获得左上偏移 - 导致输出错误的原因。

如果有人能告诉我为什么放大或缩小时价值是错误的以及如何解决这个问题我真的很棒!

谢谢!

这是一个与我正在做的事情相同的图像:( WPF-Graphics.com的Curtesy) This is a WPF control showing a main image, and a small thumb with a viewport rectangle showing the user what he's looking at

0 个答案:

没有答案