WPF WebBrowser - 如何缩放内容?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF WebBrowser - 如何缩放内容?相关的知识,希望对你有一定的参考价值。

尝试在WPF(C#/ XAML,.NET 4.0)WebBrowser应用程序中测试基本浏览器概念。到目前为止,唯一的问题是以编程方式缩放。有没有人有这方面的经验?

MSDN没有列出任何内容:http://msdn.microsoft.com/en-us/library/system.windows.controls.webbrowser.aspx此外,我尝试了各种各样的东西,如RenderTransform选项无济于事。这是不可能的或没有记录。我希望后者。请注意,WinForm解决方案是不可接受的。

提前感谢任何帮助,Beems

答案

也许你可以像这样执行一个javascript

document.body.style.zoom = 1.5;

在WPF中,我们可以操作文档。我为您创建了一个扩展方法,因此您可以设置缩放:

// www.tonysistemas.com.br
public static partial class MyExtensions
{
    public static void SetZoom(this System.Windows.Controls.WebBrowser WebBrowser1, double Zoom)
    {
        // For this code to work: add the Microsoft.mshtml .NET reference      
        mshtml.IHTMLDocument2 doc = WebBrowser1.Document as mshtml.IHTMLDocument2;
        doc.parentWindow.execScript("document.body.style.zoom=" + Zoom.ToString().Replace(",", ".") + ";");
    }
}

用法:

WebBrowser1.SetZoom(0.5);
另一答案

我使用了这个答案https://stackoverflow.com/a/7326179/17822中的点点滴滴来协助缩放问题。这里的关键是ExecWB方法。 Windows桌面上的缩放与WebBrowser控件上的缩放不是1-1。你将不得不玩它。等式的伪代码如下所示:

zoomLevel = (winDesktopZoom - 100) + _winDesktopZoom + 10

请注意,您需要一个对SHDocVw.dll的引用,该引用可以在x64机器的C: Windows SysWOW64和x86机器的C: Windows System32中找到。

这不是很好,但它是我发现的唯一的东西,没有升级到http://awesomium.com实际上匹配IE默认缩放设置(默认为Windows桌面缩放)到WebBrowser控件。另请注意,Windows桌面缩放仅适用于Vista,Win 7以及可能的2k8以及控制面板 - >显示,但我没有检查Vista或2k8。它不适用于XP(任何服务包)。

要获得Windows桌面缩放(由于某些原因,这确实适用于XP)我做了:

var presentSource = PresentationSource.FromVisual(this);

if (presentSource != null && presentSource.CompositionTarget != null 
    && presentSource.CompositionTarget.TransformToDevice != null)
{
    _zoomPercentage = Convert.ToInt32(100 * presentSource.CompositionTarget.TransformToDevice.M11);
}

此逻辑放在该XAML窗口的OnSourceInitialized覆盖中。

另一答案

你可以看到这个:

http://chriscavanagh.wordpress.com/2010/10/04/a-real-net-4-0-webbrowser/

以上是关于WPF WebBrowser - 如何缩放内容?的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用 WPF WebBrowser 控件的点击噪音?

WebBrowser禁用触摸缩放

WPF:如何在弹出窗口中自动调整 WebBrowser 的大小?

如何通过 MVVM 在 WPF WebBrowser 控件上使用 Javascript

数据绑定 WPF 中 WebBrowser 的 Source 属性

打印 WPF WebBrowser 的内容