如何使用WebBrowser控件上的DrawToBitmap修复不透明度错误?
根据以下链接和我的控制台应用程序,该方法DrawToBitmap
不考虑不透明性。
证明链接:http : //social.msdn.microsoft.com/Forums/vstudio/en-US/e9704309-0c52-442d-80e0-2f8393dcd313/webbrowser-opacity-problem-
我的HTML代码:http://fiddle.jshell.net/L37TC/
<div id="fader" style="background-color: #ff0000">ffff</div><div style="background-color: blue; opacity:0;filter:alpha(opacity=0);">HIDDEN TEXT!</div>SomeText
我的C#控制台代码:
var bmp = new Bitmap(640,480, PixelFormat::Format32bppArgb)var web = (System.Windows.Forms.Control)sender;web.DrawToBitmap(bmp, Rectangle(0, 0, 640,480));
所以我在寻找替代.NET内置的解决方案(没有CEF,Awesomium,或任何扩展请)只是一个内置的.NET的功能来修复bug或替代解决方案采取了网页URL的屏幕截图在我的控制台应用。
如果我使WebBrowser
客户端对窗口可见并且使用CopyFromScreen
不透明性,则该窗口会受到尊重并且HIDDEN TEXT
没有显示出来,那么我怎么不想使WebBrowser
桌面屏幕对窗口可见。
我正在寻找一种内置解决方案,以从问题中的发布网址中获取屏幕快照,而无需HIDDEN TEXT
。换句话说,是尊重opacity
的解决方案。
EDIT1:我Bitmap
class
(.NET类不是BMP格式)中的所有像素的alpha值为255。因此问题不在于文件格式。我尝试了PNG和其他任何.NET支持的格式。
完整的源代码(控制台模板,需要添加对System.Drawing
和的引用System.Windows.Forms
class Program{ static System.Windows.Forms.WebBrowser w = new System.Windows.Forms.WebBrowser(); [STAThread] static void Main(string[] args) { w.Navigate("http://fiddle.jshell.net/L37TC/show/"); w.DocumentCompleted += w_DocumentCompleted; System.Windows.Forms.Application.Run(); while (true) Console.Read(); }