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

  • 相关阅读:
    TDD
    算法与数据结构 文档 1 洋洋洋传
    编程的专精度
    python小课
    有时心情舒畅时打个代码心里都是默默地同步输出...
    同时可以运行在JVM上的Kotlin~枚举和判定以及数据对象的写法总结
    map
    multiset
    set
    priority_queue
  • 原文地址:https://www.cnblogs.com/qiaoke/p/7859958.html
Copyright © 2020-2023  润新知