欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#實(shí)現(xiàn)將網(wǎng)頁保存成圖片的網(wǎng)頁拍照功能

 更新時(shí)間:2014年07月30日 16:55:33   投稿:shichen2014  
這篇文章主要介紹了C#實(shí)現(xiàn)將網(wǎng)頁保存成圖片的網(wǎng)頁拍照功能,很實(shí)用的一個(gè)功能,需要的朋友可以參考下

本文實(shí)例主要實(shí)現(xiàn)了網(wǎng)頁照相機(jī)程序的功能。C#實(shí)現(xiàn)將網(wǎng)頁保存成圖片格式,簡單實(shí)現(xiàn)網(wǎng)頁拍照,主要是基于ActiveX 組件的網(wǎng)頁快照類,AcitveX 必須實(shí)現(xiàn) IViewObject 接口。因此讀者完全可擴(kuò)展此類將其用于你的C#軟件項(xiàng)目中。在此特別感謝作者:隨飛提供的代碼。

主要功能代碼如下:

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Runtime.InteropServices.ComTypes;
using System.Drawing;
using System.Windows.Forms;
namespace SnapLibrary
{
  /// <summary>
  /// ActiveX 組件快照類,用于網(wǎng)頁拍照,將網(wǎng)頁保存成圖片
  /// AcitveX 必須實(shí)現(xiàn) IViewObject 接口
  /// 作者:隨飛
  /// </summary>
  public class Snapshot
  {
    /// <summary>
    /// 取快照
    /// </summary>
    /// <param name="pUnknown">Com 對(duì)象</param>
    /// <param name="bmpRect">圖象大小</param>
    /// <returns></returns>
    public Bitmap TakeSnapshot(object pUnknown, Rectangle bmpRect)
    {
      if (pUnknown == null)
        return null;
      //必須為com對(duì)象
      if (!Marshal.IsComObject(pUnknown))
        return null;
      //IViewObject 接口
      SnapLibrary.UnsafeNativeMethods.IViewObject ViewObject = null;
      IntPtr pViewObject = IntPtr.Zero;
      //內(nèi)存圖
      Bitmap pPicture = new Bitmap(bmpRect.Width, bmpRect.Height);
      Graphics hDrawDC = Graphics.FromImage(pPicture);
      //獲取接口
      object hret = Marshal.QueryInterface(Marshal.GetIUnknownForObject(pUnknown),
        ref UnsafeNativeMethods.IID_IViewObject, out pViewObject);
      try
      {
        ViewObject = Marshal.GetTypedObjectForIUnknown(pViewObject, typeof(SnapLibrary.UnsafeNativeMethods.IViewObject)) as SnapLibrary.UnsafeNativeMethods.IViewObject;
        //調(diào)用Draw方法
        ViewObject.Draw((int)DVASPECT.DVASPECT_CONTENT,
          -1,
          IntPtr.Zero,
          null,
          IntPtr.Zero,
          hDrawDC.GetHdc(),
          new NativeMethods.COMRECT(bmpRect),
          null,
          IntPtr.Zero,
          0);
        Marshal.Release(pViewObject);
      }
      catch (Exception ex)
      {
        Console.WriteLine(ex.Message);
        throw ex;
      }
      //釋放
      hDrawDC.Dispose();
      return pPicture;
    }
  }
}

相關(guān)文章

最新評(píng)論