【发布时间】:2015-12-28 10:18:51
【问题描述】:
我正在将 Winforms 项目转换为 WPF,在此过程中我遇到了一个非常特殊的问题。请允许我解释一下。在我的项目中,我使用的是 OpenTK,这意味着我需要在 WindowsFormHost 中托管 GLControl。 GLControl 使用了第一人称相机,为了让它工作,我需要计算 GLControl 的确切中心,这是当用户“环顾四周”时我放置鼠标的位置。这是我在 WPF 中的应用程序示例:
我之前在 WinForms 中使用的函数是:
public static Point FindCenterOfControl(Form parent, Control control)
{
Point location = parent.PointToScreen(control.Location);
return new Point(location.X + control.Width / 2, location.Y + control.Height / 2);
}
但是很自然,这在 WPF 中不起作用。我尝试了各种参数,但我不断收到 null 崩溃,主要来自我的 GLControl,当它托管在 WPF 应用程序中时,它显然不再使用“Location”属性。所以,坦率地说,我不知道如何做到这一点。
另外一点,只要我猜到中心应该在哪里,我的代码就可以工作。我可以移动相机,它看起来很好。当我调整窗口大小时,问题就出现了,因为中心离它应该在的位置很远,而且我的第一人称相机会弹道。我需要一种方法来复制我之前在 WPF 应用程序中计算控件绝对中心的函数。
有没有人知道如何将旧功能转换为支持 WPF 环境中托管控件的功能?
【问题讨论】: