在建立WPF之前,我们先看一下在Winform下是怎么实现的。打开源码,我们可以看到里面有一个自己的实现类OgreWindow ,而在OgreWindow的构造函数中有两个参数,一个是位置(Point类型),别外一个是显示面板的句柄。在这里,它是用Panel来作为承载窗器,调用Panel的Handle属性获得句柄,引用对象,即可实现;还有一个注意的是,它在Winform的Paint(重绘事件)中调用类的Paint。这样子,一个Mogre即在Winform上显示了。
看了Winform的代码后,下面我们开始建立个WPF。
1.建立WPF程序,然后在引用 WindowsFormsIntegration和System.Windows.Forms。
2. 在WPF的xaml的顶级节点加上下面代码
xmlns:wf ="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
然后在页面写入下面代码,建立Panel
< wf:Panel x:Name ="myPanel" Width ="1024" Height ="768" ></ wf:Panel >
</ wfi:WindowsFormsHost >
3.把Winform示例中的OgreWindow 类复制过来。
4.因为在WPF中没有Panit(重绘事件),所以在这里我们用CompositionTarget 来代替。直接用CompositionTarget
的Rendering 事件来输出,所以在事件中写上mogreWin.Paint()就可以了。这样,Mogre就在WPF中显示了。
结语:WPF中显示Mogre中,最主要要解决的是Panel的实现与Panit中的重绘。因为WPF中没有Panel,所以要借助Winfrom的控件;因为WPF中没有重绘事件,所以要用CompositionTarget 来代替;