C#实现将网页保存成图片的网页拍照功能
本文实例主要实现了网页照相机程序的功能。C#实现将网页保存成图片格式,简单实现网页拍照,主要是基于ActiveX组件的网页快照类,AcitveX必须实现IViewObject接口。因此读者完全可扩展此类将其用于你的C#软件项目中。在此特别感谢作者:随飞提供的代码。
主要功能代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.Runtime.InteropServices;
usingSystem.Runtime.InteropServices.ComTypes;
usingSystem.Drawing;
usingSystem.Windows.Forms;
namespaceSnapLibrary
{
///<summary>
///ActiveX组件快照类,用于网页拍照,将网页保存成图片
///AcitveX必须实现IViewObject接口
///作者:随飞
///</summary>
publicclassSnapshot
{
///<summary>
///取快照
///</summary>
///<paramname="pUnknown">Com对象</param>
///<paramname="bmpRect">图象大小</param>
///<returns></returns>
publicBitmapTakeSnapshot(objectpUnknown,RectanglebmpRect)
{
if(pUnknown==null)
returnnull;
//必须为com对象
if(!Marshal.IsComObject(pUnknown))
returnnull;
//IViewObject接口
SnapLibrary.UnsafeNativeMethods.IViewObjectViewObject=null;
IntPtrpViewObject=IntPtr.Zero;
//内存图
BitmappPicture=newBitmap(bmpRect.Width,bmpRect.Height);
GraphicshDrawDC=Graphics.FromImage(pPicture);
//获取接口
objecthret=Marshal.QueryInterface(Marshal.GetIUnknownForObject(pUnknown),
refUnsafeNativeMethods.IID_IViewObject,outpViewObject);
try
{
ViewObject=Marshal.GetTypedObjectForIUnknown(pViewObject,typeof(SnapLibrary.UnsafeNativeMethods.IViewObject))asSnapLibrary.UnsafeNativeMethods.IViewObject;
//调用Draw方法
ViewObject.Draw((int)DVASPECT.DVASPECT_CONTENT,
-1,
IntPtr.Zero,
null,
IntPtr.Zero,
hDrawDC.GetHdc(),
newNativeMethods.COMRECT(bmpRect),
null,
IntPtr.Zero,
0);
Marshal.Release(pViewObject);
}
catch(Exceptionex)
{
Console.WriteLine(ex.Message);
throwex;
}
//释放
hDrawDC.Dispose();
returnpPicture;
}
}
}热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短