zoukankan      html  css  js  c++  java
  • c# webBrowser 转图片

    class NativeMethods
    {
    [ComImport]
    [Guid("0000010D-0000-0000-C000-000000000046")]
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    interface IViewObject
    {
    void Draw([MarshalAs(UnmanagedType.U4)] uint dwAspect, int lindex, IntPtr pvAspect, [In] IntPtr ptd, IntPtr hdcTargetDev, IntPtr hdcDraw, [MarshalAs(UnmanagedType.Struct)] ref RECT lprcBounds, [In] IntPtr lprcWBounds, IntPtr pfnContinue, [MarshalAs(UnmanagedType.U4)] uint dwContinue);
    }

    [StructLayout(LayoutKind.Sequential, Pack = 4)]
    struct RECT
    {
    public int Left;
    public int Top;
    public int Right;
    public int Bottom;
    }

    public static void GetImage(object obj, Image destination, Color backgroundColor)
    {
    using (Graphics graphics = Graphics.FromImage(destination))
    {
    IntPtr deviceContextHandle = IntPtr.Zero;
    RECT rectangle = new RECT();

    rectangle.Right = destination.Width;
    rectangle.Bottom = destination.Height;

    graphics.Clear(backgroundColor);

    try
    {
    deviceContextHandle = graphics.GetHdc();

    IViewObject viewObject = obj as IViewObject;
    viewObject.Draw(1, -1, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, deviceContextHandle, ref rectangle, IntPtr.Zero, IntPtr.Zero, 0);
    }
    finally
    {
    if (deviceContextHandle != IntPtr.Zero)
    {
    graphics.ReleaseHdc(deviceContextHandle);
    }
    }
    }
    }
    }

    private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {

    Bitmap screenshot = new Bitmap(webBrowser1.Width, webBrowser1.Height);
    NativeMethods.GetImage(webBrowser1.ActiveXInstance, screenshot, Color.White);

    // 保存图片
    screenshot.Save(@"F:h11.png");
    }

  • 相关阅读:
    影响一个UIView是否能正常显示的几个因素
    浅谈多进程多线程的选择
    Spring阅读方法
    数据库范式通俗解释
    MySQL学习笔记(二):MySQL数据类型汇总及选择参考
    MySQL学习笔记(一):SQL基础
    存储过程优缺点
    MySQL学习笔记(三):常用函数
    bzoj 3576[Hnoi2014]江南乐 sg函数+分块预处理
    bzoj 3166 [Heoi2013]Alo 可持久化Trie
  • 原文地址:https://www.cnblogs.com/qiaoke/p/7859958.html
Copyright © 2011-2022 走看看