C#實(shí)現(xiàn)將網(wǎng)頁(yè)保存成圖片的網(wǎng)頁(yè)拍照功能
更新時(shí)間:2014年07月30日 16:55:33 投稿:shichen2014
這篇文章主要介紹了C#實(shí)現(xiàn)將網(wǎng)頁(yè)保存成圖片的網(wǎng)頁(yè)拍照功能,很實(shí)用的一個(gè)功能,需要的朋友可以參考下
本文實(shí)例主要實(shí)現(xiàn)了網(wǎng)頁(yè)照相機(jī)程序的功能。C#實(shí)現(xiàn)將網(wǎng)頁(yè)保存成圖片格式,簡(jiǎn)單實(shí)現(xiàn)網(wǎng)頁(yè)拍照,主要是基于ActiveX 組件的網(wǎng)頁(yè)快照類,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)頁(yè)拍照,將網(wǎng)頁(yè)保存成圖片
/// 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)文章
C#中通過API實(shí)現(xiàn)的打印類 實(shí)例代碼
這篇文章介紹了,C#中通過API實(shí)現(xiàn)的打印類 實(shí)例代碼,有需要的朋友可以參考一下2013-08-08
C#實(shí)現(xiàn)連接電子秤串口自動(dòng)稱重
這篇文章介紹了C#實(shí)現(xiàn)連接電子秤串口自動(dòng)稱重的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04

