我正在將Winforms項目轉換爲WPF,並且這樣做時我遇到了一個非常特殊的問題。請允許我解釋一下。在我的項目中,我使用的是OpenTK,這意味着我需要在WindowsFormHost中託管GLControl。 GLControl使用了第一人稱相機,爲了使其工作,我需要計算GLControl的確切中心,這是我在用戶「環顧四周」時放置鼠標的位置。這裏是我的應用程序的例子在WPF:尋找在Wpf WindowsFormsHost中託管的Winforms控件的中心
,我曾在以前的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工作。我已經嘗試了各種參數,但是我一直收到空崩潰,主要來自我的GLControl,當它在WPF應用程序中託管時,顯然不再使用「Location」屬性。所以,坦率地說,我對如何實現這一點感到不知所措。
作爲另一個說明,我的代碼工作,只要我猜中心應該在哪裏。我可以移動相機,看起來很好。當我重新調整窗口大小時,問題就出現了,因爲那時中心距離它的距離應該很遠,我的第一人稱攝像機會彈道。我需要一種方法來複制我之前在我的WPF應用程序中計算控件的絕對中心的功能。
有沒有人有任何想法如何將我的舊功能轉換爲支持WPF環境內的託管控件的東西?