最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C# 使用 WebBrowser 實(shí)現(xiàn) HTML 轉(zhuǎn)圖片功能的示例代碼

 更新時間:2020年07月04日 16:58:49   作者:Soar、毅  
這篇文章主要介紹了C# 如何使用 WebBrowser 實(shí)現(xiàn) HTML 轉(zhuǎn)圖片功能,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下

在 .NET 平臺上,我們有多種方式可以將一段 HTML 文本轉(zhuǎn)換為一張圖片:HTML Renderer、SelectPdfAspose.Html 等。

在 WinForm 程序中,每一個 System.Windows.Forms.Control 的派生類型均包含一個名為 DrawToBitmap 的方法,該方法可以將控件繪制到一張圖片上。WebBrowser 具備顯示 HTML 的功能,又因?yàn)槠鋸?Control 類型派生,所以包含 DrawToBitmap 方法。我們只需將要在 WebBrowser 上加載要展示的 HTML 并在其 DocumentCompleted 事件中繪制圖片即可:

public static async Task<Image> HtmlToImage(String html, int width = 1024, int height = 768)
{
  var taskCompletionSource = new TaskCompletionSource<Image>();
  var thread = new Thread(() =>
  {
    using var browser = new WebBrowser
    {
      Width = width,
      Height = height,
      ScrollBarsEnabled = false
    };
    browser.DocumentCompleted += (s, e) =>
    {
      var b = s as WebBrowser;
      if (b == null)
      {
        return;
      }
      var bmp = new Bitmap(b.Width, b.Height);
      b.DrawToBitmap(bmp, new Rectangle(0, 0, b.Width, b.Height));
      taskCompletionSource.SetResult(bmp);
      Application.ExitThread();
    };
    browser.DocumentText = html;
    Application.Run();
  });
  thread.SetApartmentState(ApartmentState.STA);
  thread.Start();
  return await taskCompletionSource.Task;
}

以上代碼參考了:Stack Overflow ,筆者將其改造為異步方法并增加了必要的釋放功能。在 LINQPad 中測試效果如下:

該方式的優(yōu)點(diǎn):

  1. 簡單易用。
  2. 支持最新的 .NET Core 環(huán)境。
  3. 無需引用第三方類庫,沒有版權(quán)和安全性風(fēng)險,安全且免費(fèi)。
  4. 支持從互聯(lián)網(wǎng)上加載內(nèi)容。

該方式的缺點(diǎn):

  1. 雖然支持 .NET Core ,但以上代碼不能跨平臺使用。
  2. WebBrowser 控件基于 IE 瀏覽器并受宿主操作系統(tǒng)影響,要求被呈現(xiàn)的網(wǎng)頁具備較高的兼容性。

使用 IE8+ 版本進(jìn)行渲染

筆者在實(shí)際工作中使用到了部分 CSS3 屬性,默認(rèn)情況下 WebBrowser 使用低版本的 IE 瀏覽器渲染網(wǎng)頁,這會導(dǎo)致部分網(wǎng)頁效果不生效,比如隔行變色效果。除了修改注冊表,我們?nèi)钥梢酝ㄟ^在網(wǎng)頁中加入 meta 標(biāo)簽的方式告知 WebBrowser 使用高版本的 IE 瀏覽器進(jìn)行渲染,僅需將以下代碼復(fù)制至 HTML 的 head 標(biāo)簽內(nèi)即可:

<meta http-equiv="X-UA-Compatible" content="IE=edge"/>

以上就是C# 使用 WebBrowser 實(shí)現(xiàn) HTML 轉(zhuǎn)圖片功能的實(shí)例代碼的詳細(xì)內(nèi)容,更多關(guān)于C# WebBrowser 實(shí)現(xiàn) HTML 轉(zhuǎn)圖片的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C#實(shí)現(xiàn)異步的常用方式總結(jié)

    C#實(shí)現(xiàn)異步的常用方式總結(jié)

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)異步的幾個常用方式,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以了解一下
    2023-05-05
  • 利用C#實(shí)現(xiàn)HTML模板的循環(huán)輸出

    利用C#實(shí)現(xiàn)HTML模板的循環(huán)輸出

    模板循環(huán)輸出 ,是指使用 UI 前端設(shè)計的 HTML 模板片斷,并結(jié)合數(shù)據(jù)記錄進(jìn)行循環(huán)輸出的過程,本文將介紹如何中通過 C# 實(shí)現(xiàn)操作 HTML 模板的循環(huán)輸出,文章通過代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • C#下listview如何插入圖片

    C#下listview如何插入圖片

    這篇文章主要為大家詳細(xì)介紹了C#下listview如何插入圖片,如何在listview中插入圖片的每一個步驟為大家分享,感興趣的朋友可以參考一下
    2016-05-05
  • C#調(diào)用SQL?Server中有參數(shù)的存儲過程

    C#調(diào)用SQL?Server中有參數(shù)的存儲過程

    這篇文章介紹了C#調(diào)用SQL?Server中有參數(shù)存儲過程的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • C#將Excel中的數(shù)據(jù)轉(zhuǎn)換成DataSet

    C#將Excel中的數(shù)據(jù)轉(zhuǎn)換成DataSet

    這篇文章主要介紹了C#將Excel中的數(shù)據(jù)轉(zhuǎn)換成DataSet的方法,非常簡單實(shí)用,從本人項目中提取出來的,推薦給大家,希望對大家學(xué)習(xí)C#能夠有所幫助。
    2015-03-03
  • C#使用Zxing.dll組件解析二維碼的實(shí)現(xiàn)

    C#使用Zxing.dll組件解析二維碼的實(shí)現(xiàn)

    ZXing是一個開源的,支持多種格式的條形碼圖像處理庫,本文主要介紹了C#使用Zxing.dll組件解析二維碼的實(shí)現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • C# PadLeft、PadRight用法詳解

    C# PadLeft、PadRight用法詳解

    本文主要介紹了C# PadLeft、PadRight用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • C#簡單的特殊輸出實(shí)例

    C#簡單的特殊輸出實(shí)例

    這篇文章主要介紹了C#簡單的特殊輸出,以實(shí)例實(shí)現(xiàn)了針對一些特殊字符與位置的輸出控制,具有一定的參考借鑒價值,需要的朋友可以參考下
    2014-11-11
  • c#生成隨機(jī)數(shù)示例分享

    c#生成隨機(jī)數(shù)示例分享

    這篇文章主要介紹了c#生成隨機(jī)數(shù)示例分享,需要的朋友可以參考下
    2014-03-03
  • unity實(shí)現(xiàn)簡單的貪吃蛇游戲

    unity實(shí)現(xiàn)簡單的貪吃蛇游戲

    這篇文章主要為大家詳細(xì)介紹了unity實(shí)現(xiàn)簡單的貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03

最新評論

台东县| 观塘区| 曲阳县| 铅山县| 汉寿县| 洪泽县| 会宁县| 垫江县| 安泽县| 吉首市| 航空| 长垣县| 延川县| 锡林郭勒盟| 弥渡县| 永城市| 都江堰市| 同仁县| 五寨县| 辉南县| 杭锦后旗| 江孜县| 冀州市| 札达县| 理塘县| 松潘县| 全州县| 舒城县| 林甸县| 福贡县| 城口县| 涡阳县| 晋宁县| 方山县| 定西市| 江源县| 青川县| 阿瓦提县| 沙雅县| 敦化市| 甘肃省|