亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

Winform實現將網頁生成圖片的方法

2020-01-24 02:23:29
字體:
來源:轉載
供稿:網友

通常瀏覽器都有將網頁生成圖片的功能,本文實例講述了Winform實現將網頁生成圖片的方法。分享給大家供大家參考。具體方法如下:

工具截圖如下:

生成后的圖片如下:

手動填寫網站地址,可選擇圖片類型和保持圖片地址,來生成頁面的圖片,當圖片路徑未選擇時則保存桌面;

具體代碼如下:

將html生成圖片的類

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Drawing.Imaging; using System.Runtime.InteropServices; using System.Security;namespace Print{  public class Test  {    public static Bitmap GetHtmlImage(Uri UrlString, int Width)    {      WebBrowser MyControl = new WebBrowser();      MyControl.Size = new Size(Width, 10);      MyControl.Url = UrlString;      while (MyControl.ReadyState != WebBrowserReadyState.Complete)      {        Application.DoEvents();      }      MyControl.Height = MyControl.Document.Body.ScrollRectangle.Height + 20;      MyControl.Url = UrlString;      WebControlImage.Snapshot snap = new WebControlImage.Snapshot();      Bitmap MyImage = snap.TakeSnapshot(MyControl.ActiveXInstance, new Rectangle(0, 0, MyControl.Width, MyControl.Height));      MyControl.Dispose();      return MyImage;    }    ///     /// WebBrowser獲取圖形     ///     private class WebControlImage    {      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;        }      }      public class Snapshot      {        ///         /// ?煺?         ///         /// Com 對象         /// 圖象大小         ///         public Bitmap TakeSnapshot(object pUnknown, Rectangle bmpRect)        {          if (pUnknown == null)            return null;          //必須為com對象           if (!Marshal.IsComObject(pUnknown))            return null;          //IViewObject 接口           UnsafeNativeMethods.IViewObject ViewObject = null;          IntPtr pViewObject = IntPtr.Zero;          //內存圖           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(UnsafeNativeMethods.IViewObject)) as UnsafeNativeMethods.IViewObject;            //調用Draw方法             ViewObject.Draw((int)System.Runtime.InteropServices.ComTypes.DVASPECT.DVASPECT_CONTENT,            -1,            IntPtr.Zero,            null,            IntPtr.Zero,            hDrawDC.GetHdc(),            new NativeMethods.COMRECT(bmpRect),            null,            IntPtr.Zero,            0);          }          catch (Exception ex)          {            Console.WriteLine(ex.Message);            throw ex;          }          //釋放           hDrawDC.Dispose();          return pPicture;        }      }      [SuppressUnmanagedCodeSecurity]      internal static class UnsafeNativeMethods      {        public static Guid IID_IViewObject = new Guid("{0000010d-0000-0000-C000-000000000046}");        [ComImport, Guid("0000010d-0000-0000-C000-000000000046"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]        public interface 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] NativeMethods.COMRECT lprcWBounds, IntPtr pfnContinue, [In] int dwContinue);          [PreserveSig]          int GetColorSet([In, MarshalAs(UnmanagedType.U4)] int dwDrawAspect, int lindex, IntPtr pvAspect, [In] NativeMethods.tagDVTARGETDEVICE ptd, IntPtr hicTargetDev, [Out] NativeMethods.tagLOGPALETTE ppColorSet);          [PreserveSig]          int Freeze([In, MarshalAs(UnmanagedType.U4)] int dwDrawAspect, int lindex, IntPtr pvAspect, [Out] IntPtr pdwFreeze);          [PreserveSig]          int Unfreeze([In, MarshalAs(UnmanagedType.U4)] int dwFreeze);          void SetAdvise([In, MarshalAs(UnmanagedType.U4)] int aspects, [In, MarshalAs(UnmanagedType.U4)] int advf, [In, MarshalAs(UnmanagedType.Interface)] System.Runtime.InteropServices.ComTypes.IAdviseSink pAdvSink);          void GetAdvise([In, Out, MarshalAs(UnmanagedType.LPArray)] int[] paspects, [In, Out, MarshalAs(UnmanagedType.LPArray)] int[] advf, [In, Out, MarshalAs(UnmanagedType.LPArray)] System.Runtime.InteropServices.ComTypes.IAdviseSink[] pAdvSink);        }      }    }  }}

winfrom后臺處理方面代碼如下

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Drawing.Imaging;namespace Excel文件處理{  public partial class Html : Form  {    public Html()    {      InitializeComponent();    }    private string ImageUrl = "";//圖片地址    private string ImageName = "";//圖片名稱    private void button1_Click(object sender, EventArgs e)    {      string HtmlUrl = this.Txt_Url.Text.Trim();       if (HtmlUrl=="")      {        MessageBox.Show("請輸入網址");        return;      }       if (ImageUrl.Trim()=="")      {         ImageUrl = @"C:/Users/Administrator/Desktop";        }      try      {        Uri ri = new Uri(this.Txt_Url.Text);        Bitmap bit = Print.Test.GetHtmlImage(ri, 1200);        ImageName = this.Txt_Name.Text.Trim();//圖片名稱        if (ImageName != "")        {          if (ImageName.IndexOf('.') != -1)          {//當用戶輸入圖片后綴時,將后綴截取            ImageName.Substring(0, ImageName.LastIndexOf('.'));          }        }        else          ImageName = DateTime.Now.Ticks.ToString();//時間名稱        switch (this.comboBox1.SelectedText)        {          case "GIF": ImageUrl += "http://" + ImageName + ".gif"; break;          case "JPG": ImageUrl += "http://" + ImageName + ".jpg"; break;          case "PNG": ImageUrl += "http://" + ImageName + ".png"; break;          default: ImageUrl += "http://" + ImageName + ".png"; break;        }        switch (this.comboBox1.SelectedText)        {          case "GIF": bit.Save(ImageUrl, ImageFormat.Gif); break;          case "JPG": bit.Save(ImageUrl, ImageFormat.Jpeg); break;          case "PNG": bit.Save(ImageUrl, ImageFormat.Png); break;          default: bit.Save(ImageUrl, ImageFormat.Png); break;        }        bit = null;        ImageUrl = "";//圖片地址        ImageName = "";//圖片名稱        MessageBox.Show("生產成功");      }      catch      {        MessageBox.Show("網址輸入有誤!");        return;      }    }    private void button2_Click(object sender, EventArgs e)    {       //獲取保存路徑      if (this.folderBrowserDialog1.ShowDialog()==DialogResult.OK)      {        if (this.folderBrowserDialog1.SelectedPath.Trim()!="")        {          ImageUrl = folderBrowserDialog1.SelectedPath;          this.label6.Text = ImageUrl;        }      }    }  }}

希望本文所述對大家的C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲视频一区二区三区| 日产精品久久久一区二区福利| xvideos成人免费中文版| 亚洲aaaaaa| 91av在线精品| 精品亚洲一区二区三区四区五区| 97在线精品国自产拍中文| 国产精品久久视频| 国产成一区二区| 亚洲成年人在线播放| 日韩av一卡二卡| 亚洲欧美在线一区| 久久久999精品视频| 欧美午夜丰满在线18影院| 久久久久久久久久久免费精品| 精品女厕一区二区三区| 欧美麻豆久久久久久中文| 国产精品人成电影| 国产经典一区二区| 中国日韩欧美久久久久久久久| 91精品国产色综合久久不卡98口| 美乳少妇欧美精品| 日韩激情视频在线| 亚洲国产成人在线视频| 国模gogo一区二区大胆私拍| 欧美性xxxxxxxxx| 国模吧一区二区三区| 色偷偷偷亚洲综合网另类| 亚洲国产私拍精品国模在线观看| 成人一区二区电影| 国产福利精品av综合导导航| 亚洲国产精品嫩草影院久久| 精品国产乱码久久久久酒店| 国产日产欧美精品| 亚洲最新中文字幕| 亚洲国产天堂网精品网站| 欧美裸体xxxxx| 国产精品手机播放| 精品偷拍一区二区三区在线看| 欧美性猛交丰臀xxxxx网站| 538国产精品一区二区免费视频| 亚洲国产高清自拍| 精品国产成人av| 亚洲精品动漫久久久久| 欧美视频二区36p| 亚洲精品国产福利| 亚洲综合在线中文字幕| 亚洲丝袜一区在线| 国产一区二区久久精品| 人妖精品videosex性欧美| 久久成人亚洲精品| 亚洲а∨天堂久久精品喷水| 中文字幕在线视频日韩| 国产丝袜一区视频在线观看| 欧美日韩一区二区免费在线观看| 亚洲人成网7777777国产| 色黄久久久久久| 国产免费一区二区三区在线能观看| 欧美日韩精品在线播放| 一区二区欧美在线| 欧美大片大片在线播放| 日韩少妇与小伙激情| 久久精品免费电影| 亚洲女人初尝黑人巨大| 青青久久av北条麻妃海外网| 69影院欧美专区视频| 最近日韩中文字幕中文| 91九色精品视频| 欧美久久久精品| 夜夜嗨av一区二区三区四区| 国产精品第二页| 成人激情视频免费在线| 日韩精品在线影院| 亚洲精品有码在线| 国产日韩换脸av一区在线观看| 欧美高清在线视频观看不卡| 日韩精品视频在线观看网址| 欧洲s码亚洲m码精品一区| 91精品国产高清久久久久久91| 5566日本婷婷色中文字幕97| 欧美性理论片在线观看片免费| 亚洲成人免费网站| 亚洲白拍色综合图区| 91啪国产在线| 亚洲天堂av高清| www.日韩.com| 日本19禁啪啪免费观看www| 国产精品成人av性教育| 亚洲高清福利视频| 亚洲影院在线看| 欧美最猛黑人xxxx黑人猛叫黄| 亚洲精品久久久久| 亚洲综合成人婷婷小说| 两个人的视频www国产精品| 亚洲女人天堂成人av在线| 国产精品大陆在线观看| 国产在线观看不卡| 久久国产精品视频| 亚洲国产小视频在线观看| 97香蕉超级碰碰久久免费软件| 欧美日韩中文在线观看| 日本一本a高清免费不卡| 亚洲女人天堂av| 欧美午夜精品久久久久久久| 国产精品1234| 性日韩欧美在线视频| 欧美电影在线观看完整版| 国产在线视频欧美| 国产精品欧美一区二区| 最新69国产成人精品视频免费| 精品久久香蕉国产线看观看亚洲| 国产精品久久久久久五月尺| 欧美日韩国产专区| 亚洲国产成人精品久久久国产成人一区| 国产一区二中文字幕在线看| 亚洲综合日韩中文字幕v在线| 日韩电影在线观看永久视频免费网站| 久久久久国色av免费观看性色| 亚洲成人黄色在线观看| 欧美精品九九久久| 亚洲第一精品夜夜躁人人爽| 国产99视频在线观看| 美女啪啪无遮挡免费久久网站| 欧美日韩国产综合视频在线观看中文| 久久91亚洲人成电影网站| 日韩成人小视频| 国产精品第七十二页| 日本一区二区在线播放| 在线视频欧美日韩精品| 成人免费视频xnxx.com| 亚洲黄色av女优在线观看| 亚洲欧美日韩一区在线| 亚洲国产97在线精品一区| 高清欧美电影在线| 日韩小视频在线| 国产一区二区三区视频免费| 上原亚衣av一区二区三区| 日韩中文字幕在线观看| www.亚洲一二| 成人精品在线视频| 国产成人午夜视频网址| 亚洲美女在线视频| zzjj国产精品一区二区| 国产精品三级网站| 国产日韩欧美中文| 欧美三级欧美成人高清www| 日韩在线视频一区| 日韩精品免费观看| 色综合久久悠悠| 国产精品美腿一区在线看| 欧美成人激情在线| 欧美制服第一页| 精品人伦一区二区三区蜜桃免费| 国产欧美亚洲精品| 久热在线中文字幕色999舞| 亚洲人成在线观看网站高清| 日韩美女在线观看| 日韩欧美国产成人| 影音先锋欧美精品| 国产精品一区二区av影院萌芽| 97免费视频在线播放| 成人免费激情视频| 97精品在线视频| 日韩成人激情在线|