原創(chuàng)|其它|編輯:郝浩|2012-08-26 21:23:02.000|閱讀 1485 次
概述:WPF 4.5探秘之八 空域問題的解決現(xiàn)在在已經(jīng)能夠在WPF4.0上集成一個Win 32位的組件,即便是在WPF 3.5上,出名的依舊是空域問題。每個渲染技術(shù)只屬于一個領(lǐng)空,當(dāng)你在WPF應(yīng)用程序上放置你的的Win32組件時,他們將表現(xiàn)為輸入的黑洞、渲染轉(zhuǎn)換并不會很好的應(yīng)用上等等問題。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
WPF 4.5探秘之八 空域問題的解決現(xiàn)在在已經(jīng)能夠在WPF4.0上集成一個Win 32位的組件,即便是在WPF 3.5上,出名的依舊是空域問題。每個渲染技術(shù)只屬于一個領(lǐng)空,當(dāng)你在WPF應(yīng)用程序上放置你的的Win32組件時,他們將表現(xiàn)為輸入的黑洞、渲染轉(zhuǎn)換并不會很好的應(yīng)用上等等問題。更多WPF4.5探秘系列文章 WPF控件
WPF的團隊用這個4.5版本很好的解決了這些問題。在本篇文章中,將據(jù)一個例子來說明這些問題,本文是WPF 4.5的新特性系列的一部分。
不能在WPF4.0做什么?
在WPF 4.5中,如果你使用hwndhost控件添加一個Win32位的組件到一個WPF應(yīng)用程序你可能會有以下的一些限制:
如果當(dāng)你習(xí)慣于WPF,這些實在是煩人,這就是為什么托管一個Win32位的控件到WPF 4.0應(yīng)用程序,很少有人去做的原因。
在 WPF 4.5里有什么新特性?
在 WPF 4.5里主要有兩個新特性,在HwndHost類里與此相關(guān)的的是:IsRedirected和CompositionMode。
IsRedirected是一個布爾值,可以理解為:“我們是不是在解決空域的問題和在Win32位控件和WPF之間分享屏幕? 你可能想知道我為什么這不是默認(rèn)設(shè)置為true。 我認(rèn)為它能導(dǎo)致性能問題和一些你需要做的事。”
CompositionMode 是一個枚舉,主要是說明了集成的深度問題:
任何渲染進行之前,必須對這兩個屬性進行設(shè)置,否則將拋出一個異常。
WebBrowser控件的一個例子
你可能知道,WPF WebBrowser實際上是一個偽裝成WPF Win32位的一個控件, 這意味著每一個我們前面所見的缺點,會當(dāng)你在使用應(yīng)用程序的時候出現(xiàn)。
現(xiàn)在你可以像一個標(biāo)準(zhǔn)控件使用WPF 4.5,你必須做所有的是設(shè)置我們之前見過的兩個屬性的正確值。
如果想用透明度為0.6顯示一個網(wǎng)頁瀏覽器,并將其縮小到大小為以前的一半,如果想要在它旁邊的矩形內(nèi)顯示它的VisualBrus,XAML將需要滿足這些條件:
<UniformGrid Columns="2" x:Name="grid">
<WebBrowser x:Name="_webBrowser" Source="//www.jonathanAntoine.com"
Margin="5" Opacity="0.6">
<WebBrowser.RenderTransform>
<ScaleTransform ScaleX="0.5" ScaleY="0.5" />
</WebBrowser.RenderTransform>
</WebBrowser>
<Rectangle Margin="5">
<Rectangle.Fill>
<VisualBrush Visual="{Binding ElementName=_webBrowser}" />
</Rectangle.Fill>
</Rectangle>
</UniformGrid>
然后讓它運行,我必須激活重定向以及設(shè)置HwndHost 里的WebBrowser的組成模式。WPF 團隊認(rèn)為這種用法,可以找到在里面相同的屬性,而在窗口構(gòu)造函數(shù)中可以肯定做沒有渲染運行:
public MainWindow()
{
InitializeComponent();
_webBrowser.CompositionMode = System.Windows.Interop.CompositionMode.Full;
_webBrowser.IsRedirected = true;
}
以上就是在WPF 4.0和4.5對于渲染的比較。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:外文翻譯