我需要在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>发布于 2010-08-31 17:52:55
当Frame控件导航到HTML内容时,Frame控件在内部实例化本机WebBrowser ActiveX控件。这涉及到HWND互操作。因此,"airspace proplem"开始发挥作用。这基本上意味着任何WPF内容都不能与AcitveX HWND重叠。您可以通过将覆盖包包装到另一个HWND中来部分解决此问题(例如,使用Winfows表单和ElementHost)。但此解决方案不允许您在覆盖中具有透明度。
您可以尝试的另一个技巧是使用WindowsFormsHost来托管Windows Forms Browser Control,而不是使用帧。
最后但并非最不重要的一点是,如果你负担得起,你可以使用Chromium WPF Webbrowser Control而不是框架控件。它基于Awesomium库。不幸的是,它只有free for non commercial use。这是唯一的解决方案,允许您使用所有高级的WPF好东西,如变换(旋转,倾斜等),位图效果或透明度等。
https://stackoverflow.com/questions/3607847
复制相似问题