0

HTMLページを描画する必要があります。フレーム要素に表示されるページ。問題は、InkCanvasがFrameで機能しないことです。フレームの代わりにTextBlockを挿入しようとしました-ペイント作業。

動作しません:

<Frame Grid.Row="1" Source="http://google.com/"></Frame>
<InkCanvas Grid.Row="1" x:Name="inkCanvas" Background="Transparent"></InkCanvas>

仕事:

<TextBlock Grid.Row="1" Margin="10" Text="Some text"></TextBlock>
<InkCanvas Grid.Row="1" x:Name="inkCanvas" Background="Transparent"></InkCanvas>
4

1 に答える 1

1

フレームコントロールがHTMLコンテンツに移動すると、フレームコントロールはネイティブのWebBrowserActiveXコントロールを内部的にインスタンス化します。これには、HWNDの相互運用が含まれます。その結果、「空域プロプレム」が登場します。これは基本的に、WPFコンテンツがそのAcitveXHWNDと重複できないことを意味します。オーバーレイを別のHWNDにラップすることで(たとえば、Winfows FormsとElementHostを使用して)、この問題を部分的に回避できます。ただし、このソリューションでは、オーバーレイに透明性を持たせることはできません。

試すことができるもう1つのトリックは、フレームを使用する代わりに、 WindowsFormsHostを使用してWindowsフォームブラウザーコントロールをホストすることです。

最後になりましたが、余裕があれば、フレームコントロールの代わりにChromiumWPFWebブラウザーコントロールを使用できます。これは、 Awesomiumライブラリに基づいています。残念ながら、これは非営利目的でのみ無料です。これは、変換(回転、スキューなど)、ビットマップ効果、透明度など、すべての高度なWPF機能を使用できる唯一のソリューションです。固定された不透明な長方形にバインドされている他の2つのソリューションの幅を設定します。

于 2010-08-31T09:52:55.293 に答える