相关疑难解决方法(0)

以编程方式拍摄(远程)网页的屏幕截图

我正在尝试以编程方式拍摄网页的屏幕截图.我可能还需要拍摄全页或部分页面的屏幕截图.有没有办法做到这一点?

.net c# asp.net screenshot

8
推荐指数
1
解决办法
3256
查看次数

WebBrowser.DrawtoBitmap()一致地为少数站点生成空白图像

我一直在我的asp.net页面中使用WebBrowser.DrawtoBitmap()在单独的STA线程中运行,以将网页捕获为图像.但我发现我一直在为少数网站拍摄空白图像.我知道这种方法不是"正式"支持的,但如果有人可以为我提供任何理由或解决这些空白图像问题,那就太好了.

c# asp.net screenshot drawtobitmap

8
推荐指数
1
解决办法
1万
查看次数

如何在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 
Run Code Online (Sandbox Code Playgroud)

我的C#控制台代码:

var bmp = new  Bitmap(640,480, PixelFormat::Format32bppArgb)
var web = (System.Windows.Forms.Control)sender;
web.DrawToBitmap(bmp, Rectangle(0, 0, 640,480));
Run Code Online (Sandbox Code Playgroud)

所以我正在寻找替代的.NET内置解决方案(没有CEF,Awesomium,或任何扩展)只是.NET的内置功能来修复错误或替代解决方案,以在我的控制台中截取Web URL的屏幕截图应用.

如果我让WebBrowser窗口对我的客户端可见并且使用CopyFromScreen不透明度并且HIDDEN TEXT没有显示,那么我怎么不想让WebBrowser窗口对桌面屏幕可见.

我正在寻找一个内置的解决方案,可以在没有问题的情况下从发布的URL中截取屏幕截图HIDDEN TEXT.换句话说,是尊重opacity的解决方案.

EDIT1:我的所有像素Bitmap class(.NET类不是BMP格式)的alpha值为255.所以问题不在于文件格式.我尝试过PNG和任何其他.NET支持的格式.

完整的源代码(控制台模板,需要添加引用System.DrawingSystem.Windows.Forms

class Program
{
    static System.Windows.Forms.WebBrowser w = new System.Windows.Forms.WebBrowser();

    [STAThread]
    static void Main(string[] args) …
Run Code Online (Sandbox Code Playgroud)

.net c# vb.net webbrowser-control

8
推荐指数
1
解决办法
3568
查看次数

截图方法生成黑色图像

在 c# 中使用 control.drawtobitmap 失败后,我的第二个选择是截取桌面的屏幕截图并裁剪出所需的部分。一旦我切换用户帐户,我的打嗝就会出现,虽然程序不会崩溃,但一旦用户切换,程序只会生成纯黑色图像。

我使用此代码作为参考: WebBrowser.DrawToBitmap() 或其他方法?

我想这在逻辑上是有道理的,因为这将有助于 Windows 节省资源。

在我的情况下,我有哪些选择/解决方案?

编辑 1 对测试代码进行了修改:

        int c = 0;
        while (true)
        {
            try
            {
                c++;
                Rectangle formBounds = this.Bounds;
                Bitmap bmp = new Bitmap(formBounds.Width, formBounds.Height);
                using (Graphics g = Graphics.FromImage(bmp))
                    g.CopyFromScreen(formBounds.Location, Point.Empty, formBounds.Size);
                bmp.Save("picture" + c.ToString() + ".jpg");
                Thread.Sleep(5000);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
Run Code Online (Sandbox Code Playgroud)

这在用户帐户上运行良好,但是一旦我切换用户,它就会返回异常:句柄无效。

有任何想法吗?

编辑2:

DrawToBitmap 中的错误不是完全随机的...如果我使用您提供的代码:

Bitmap bmp = new Bitmap(this.ClientRectangle.Width, this.ClientRectangle.Height);
this.DrawToBitmap(bmp, this.ClientRectangle);
bmp.Save(".\\picture.jpg");
Run Code Online (Sandbox Code Playgroud)

它完美地工作,例如:http : //oi61.tinypic.com/1z23ynp.jpg

但是,当我右键单击 Web 浏览器控件时,DrawToBitmap 将返回一个空白图像。

示例: …

c# browser screenshot bitmap windows-7

2
推荐指数
1
解决办法
7097
查看次数