当前位置:编程学习 > C#/ASP.NET >>

C#网页截图类WebCapture(增强版)

先定义三个重要的类NativeMethods、UnsafeNativeMethods和Snapshot:
NativeMethods.cs:
 程序代码using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Drawing;

namespace WindowsApplication1
{
     /// <summary>
     /// 从 .Net 2.0 的 System.Windows.Forms.Dll 库提取
     /// 版权所有:微软公司
     /// </summary>
     internal static class NativeMethods
     {
         [StructLayout(LayoutKind.Sequential)]
         public sealed class tagDVTARGETDEVICE
         {
             [MarshalAs(UnmanagedType.U4)]
             public int tdSize;
             [MarshalAs(UnmanagedType.U2)]
             public short tdDriverNameOffset;
             [MarshalAs(UnmanagedType.U2)]
             public short tdDeviceNameOffset;
             [MarshalAs(UnmanagedType.U2)]
             public short tdPortNameOffset;
             [MarshalAs(UnmanagedType.U2)]
             public short tdExtDevmodeOffset;
         }

         [StructLayout(LayoutKind.Sequential)]
         public class COMRECT
         {
             public int left;
             public int top;
             public int right;
             public int bottom;
             public COMRECT()
             {
             }

             public COMRECT(Rectangle r)
             {
                 this.left = r.X;
                 this.top = r.Y;
                 this.right = r.Right;
                 this.bottom = r.Bottom;
             }

             public COMRECT(int left, int top, int right, int bottom)
             {
                 this.left = left;
                 this.top = top;
                 this.right = right;
                 this.bottom = bottom;
             }

             public static NativeMethods.COMRECT FromXYWH(int x, int y, int width, int height)
             {
                 return new NativeMethods.COMRECT(x, y, x + width, y + height);
             }

             public override string ToString()
             {
                 return string.Concat(new object[] { "Left = ", this.left, " Top ", this.top, " Right = ", this.right, " Bottom = ", this.bottom });
             }

         }

         [StructLayout(LayoutKind.Sequential)]
         public sealed class tagLOGPALETTE
         {
             [MarshalAs(UnmanagedType.U2)]
             public short palVersion;
             [MarshalAs(UnmanagedType.U2)]
             public short palNumEntries;
         }
     }
}
UnsafeNativeMethods.cs:
 程序代码using System;
using System.Collections.Generic;
using System.Text;
using System.Security;
using System.Runtime.InteropServices;
using System.Runtime.InteropServices.ComTypes;

namespace WindowsApplication1
{
     /// <summary>
     /// 从 .Net 2.0 的 System.Windows.Forms.Dll 库提取
     /// 版权所有:微软公司
     /// </summary>
     [SuppressUnmanagedCodeSecurity]
     internal static class UnsafeNativeMethods
     {
         public static Guid IID_IViewObject = new Guid("{0000010d-0000-0000-C000-000000000046}");

         [ComImport, Guid("0000010d-0000-0000-C000-000000000046"), Inte易做图ceType(ComInte易做图ceType.Inte易做图ceIsIUnknown)]
         public inte易做图ce IViewObject
         {
             [PreserveSig]
             int Draw([In, MarshalAs(UnmanagedType.U4)] int dwDrawAspect, int lindex, IntPtr pvAspect, [In] NativeMethods.tagDVTARGETDEVICE ptd, IntPtr hdcTargetDev, IntPtr hdcDraw, [In] NativeMethods.COMRECT lprcBounds, [In] NativeMeth

补充:软件开发 , C# ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,