我有一个用非托管C ++编码的openGL渲染引擎,我想将它嵌入到WPF应用程序中。经过一番研究后,我设法通过在windowsformshost中使用windows窗体面板的句柄来实现,如此处所述(第二个解决方案):
到目前为止还不错。问题是,我需要渲染是实时的,当一些UI操作花费太长时间(比如填充属性网格)时,渲染会闪烁。
然后我想我需要在一个单独的线程中进行渲染。我尝试使用这种方法:
http://blogs.msdn.com/b/dwayneneed/archive/2007/04/26/multithreaded-ui-hostvisual.aspx
但它不起作用,因为我似乎无法在HostVisual中放置一个windowsformshost(http://social.msdn.microsoft.com/Forums/en-AU/wpf/thread/124cc95c-a9c6-4aca-a5fc- 4f959ea715c3)
所以,任何想法我该怎么做?
答案 0 :(得分:0)
如果你使用双缓冲,它应该永远不会闪烁。请参阅“如何避免闪烁?”部分。在您链接的第一篇文章中。您还可以尝试在需要很长时间执行的代码中插入Application.DoEvents()调用。只是一些建议可以替代使用线程解决方案增加的复杂性。
编辑:刚刚意识到WPF不支持DoEvents(),但还有其他选择:http://nmarian.blogspot.com/2007/09/doevents-in-wpf.html