尝试在WPF(C#/ XAML,.NET 4.0)WebBrowser应用程序中测试基本浏览器概念。到目前为止,唯一的问题是以编程方式缩放。有没有人有这方面的经验?
MSDN没有列出任何内容:http://msdn.microsoft.com/en-us/library/system.windows.controls.webbrowser.aspx 另外,我尝试过各种各样的东西,比如RenderTransform选项无济于事。这是不可能的或没有记录。我希望后者。请注意,WinForm解决方案是不可接受的。
提前感谢您的帮助, Beems
答案 0 :(得分:8)
也许你可以执行这样的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);
答案 1 :(得分:1)
我使用了这个答案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 Control匹配。另请注意,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覆盖中。
答案 2 :(得分:0)