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");
    }

  • 相关阅读:
    GetDlgItem
    vc中调用其他应用程序的方法(函数) winexec,shellexecute ,createprocess
    C #中的几个线程同步对象方法 zz
    vc中调用exe的方法
    函数PlaySound和sndPlaySound的用法
    Radio Button的使用
    用Event实现线程同步
    C++学习随笔之九:类和动态内存分配
    C++学习随笔之七:对象和类
    C++学习随笔之二:数据处理
  • 原文地址:https://www.cnblogs.com/qiaoke/p/7859958.html
Copyright © 2011-2022 走看看