2014-06-30 118 views
1

MSDN article我发现WinForm控件可以使用HwndHost托管在WPF应用程序中。什么呈现在WPF应用程序中托管的WinForm控件?

另外,从其他互联网资源中,我发现使用DirectX呈现WPF,而使用GDI +呈现WinForm。

我的问题是,当WinForm控件绘制在WPF应用程序中时呈现WinForm控件的是什么; DirectX,GDI +或两者兼而有之?

我对这两项技术都很少有经验,也没有宝宝步骤。

谢谢

回答

1

你是不正确的有关要求HwndHost显示一个Windows WPF应用程序窗体控件。您正在阅读的文章是针对Windows窗体的Win32 Interoperation,而不是。要在WPF应用程序中使用Windows窗体控件,应该使用WindowsFormsHost Class

至于什么将呈现Windows窗体控件,您需要了解一些内容。 WPF使用与Windows Forms完全不同的图形系统。从MSDN上的WPF Graphics Rendering Overview页面:

了解Visual对象角色的关键之一是了解直接模式和保留模式图形系统之间的区别。基于GDI或GDI +的标准Win32应用程序使用即时模式图形系统。这意味着应用程序负责重新绘制由于诸如正在调整窗口的窗口或改变其视觉外观的对象而导致无效的客户区的部分。

相反,WPF使用保留模式系统。这意味着具有可视外观的应用程序对象定义了一组序列化的绘图数据。一旦绘图数据被定义,系统负责响应所有绘制应用程序对象的重绘请求。即使在运行时,您也可以修改或创建应用程序对象,并依靠系统响应绘制请求。保留模式图形系统中的强大功能是,绘图信息始终由应用程序保持为序列化状态,但是将渲染责任留给系统。

因此,在一般情况下,WPF渲染系统将呈现WindowsFormsHost,虽然你可能发现 Windows窗体不实际的Windows进行一些自身的渲染窗体控件。

+0

@Sherian: Element Host [Class]是一个WPF控件,用于托管Windows窗体应用程序中的WPF元素。 Windows窗体主机是一个WPF控件,用于托管WPF应用程序中的Windows窗体元素。 [http://msdn.microsoft.com/en-us/library/system.windows.forms.integration.elementhost%28v=vs.110%29.aspx] [http://msdn.microsoft.com/ EN-US /库/ system.windows.forms.integration.windowsformshost%28V = vs.110%29。aspx] – user199341

+0

谢谢......你说得很对。我相应地更新了我的答案。 – Sheridan

相关问题