国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

.NET 跨平臺圖形庫 SkiaSharp 基礎應用

這篇具有很好參考價值的文章主要介紹了.NET 跨平臺圖形庫 SkiaSharp 基礎應用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

寫在前面

SkiaSharp 是適用于 .NET 和 C# 的 2D 圖形系統(tǒng),由開源 Skia 圖形引擎提供支持,在 Google 產品中廣泛使用。 可以在應用程序中使用 SkiaSharp Xamarin.Forms 繪制 2D 矢量圖形、位圖和文本。支持跨平臺,Windows、Linux、Anroid、IOS、WebAssembly下都可以使用,底層源碼是用C++實現(xiàn)的。

SkiaSharp 最初由 Mono 開發(fā),目前由 Microsoft 維護,遵循 MIT License。

?SkiaSharp 圖形 Xamarin.Forms - Xamarin | Microsoft Learn

在Winform中使用時,可以從NuGet 獲取?SkiaSharp 類庫

.NET 跨平臺圖形庫 SkiaSharp 基礎應用,C#,.net,c#

為了方便使用,把SKImage直接轉換成Bitmap,需要再引入一個拓展類庫,SkiaSharp.Views.Desktop.Common

.NET 跨平臺圖形庫 SkiaSharp 基礎應用,C#,.net,c#?

代碼實現(xiàn)

using SkiaSharp;
using SkiaSharp.Views.Desktop;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SkiaSharpDemo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnGenerate_Click(object sender, EventArgs e)
        {
            //圖片寬度
            var width = 128;
            //圖片高度
            var height = 36;
            //生成隨機驗證碼
            var code = CreateValidateCode(4);

            // 創(chuàng)建一個SkiaSharp畫布  
            using (var surface = SKSurface.Create(new SKImageInfo(width, height)))
            {
                var canvas = surface.Canvas;

                // 清除畫布  
                canvas.Clear(SKColors.White);

                // 使用SkiaSharp繪制驗證碼文本  
                using (var textPaint = new SKPaint())
                {
                    textPaint.Color = SKColors.Black;
                    textPaint.IsAntialias = true;
                    textPaint.TextSize = height * 0.8f; // 設置文本大小  
                    textPaint.StrokeWidth = 3;

                    var textBounds = new SKRect();
                    textPaint.MeasureText(code, ref textBounds);
                    var xText = (width - textBounds.Width) / 2;
                    var yText = (height - textBounds.Height) / 2 - textBounds.Top;

                    canvas.RotateDegrees(-5, 0, 0); // 加一點點旋轉角度
                    canvas.DrawText(code, xText, yText, textPaint);
                }

                // 繪制干擾線  
                using (var linePaint = new SKPaint())
                {
                    // 半透明藍色  
                    linePaint.Color = new SKColor(0, 0, 255, 128);
                    linePaint.StrokeWidth = 2;
                    linePaint.IsAntialias = true;

                    var random = new Random();
                    for (int i = 0; i < 8; i++) // 繪制5條干擾線  
                    {
                        float x1 = 0;
                        float y1 = random.Next(height);
                        float x2 = width;
                        float y2 = random.Next(height);
                        canvas.DrawLine(x1, y1, x2, y2, linePaint);
                    }
                }

                // 保存圖像到文件  
                using (var image = surface.Snapshot())
                {
                    picTarget.Image = image.ToBitmap();
                }
            }
        }

        // 可選字符集  
        private const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

        private string CreateValidateCode(int len)
        {
            // 創(chuàng)建一個新的隨機數(shù)生成器  
            var random = new Random();

            // 生成驗證碼  
            string code = new string(Enumerable.Repeat(chars, len)
                .Select(s => s[random.Next(s.Length)]).ToArray());
            return code;
        }
    }
}

調用示例

.NET 跨平臺圖形庫 SkiaSharp 基礎應用,C#,.net,c#

.NET 跨平臺圖形庫 SkiaSharp 基礎應用,C#,.net,c#文章來源地址http://www.zghlxwxcb.cn/news/detail-824437.html

到了這里,關于.NET 跨平臺圖形庫 SkiaSharp 基礎應用的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • C#使用.Net Core進行跨平臺開發(fā)

    使用 .NET Core 進行跨平臺開發(fā)是一種靈活的方法,可以在多個操作系統(tǒng)上運行 C# 應用程序。以下是在 C# 中使用 .NET Core 進行跨平臺開發(fā)的一般步驟: 安裝 .NET Core SDK : 在開始之前,需要安裝適用于操作系統(tǒng)的 .NET Core SDK??梢詮墓俜骄W站(https://dotnet.microsoft.com/download)下載

    2024年02月11日
    瀏覽(93)
  • .NET開源、跨平臺的本地日記APP - SwashbucklerDiary

    .NET開源、跨平臺的本地日記APP - SwashbucklerDiary

    今天給大家推薦一個.NET開源、跨平臺的本地日記APP:SwashbucklerDiary「 俠客日記 」。 每個人的心底都有一個俠客,如影隨風,陪你看過一路的風景,記得你所有的精彩。 MAUI Blazor Hybrid Masa Blazor SqlSugar Serilog .NET 多平臺應用 UI (.NET MAUI) 是一個跨平臺框架,用于使用 C# 和 XAML 創(chuàng)

    2024年02月08日
    瀏覽(122)
  • 跨平臺圖表:ChartDirector for .NET 7.1 Crack

    跨平臺圖表:ChartDirector for .NET 7.1 Crack

    什么是新的 ChartDirector for .NET 7.0 支持跨平臺使用,但僅限于 .NET 6。這是因為在 .NET 7 中,Microsoft 停止了用于非 Windows 使用的 .NET 圖形庫 System.Drawing.Common。由于 ChartDirector for .NET 7.0 依賴于該庫,因此它不再支持 .NET 7 上的非 Windows 使用。 ChartDirector for .NET 7.1 NuGet 包現(xiàn)在包含一

    2024年02月11日
    瀏覽(102)
  • .Net 7 Native AOT 單文件 無依賴 跨平臺

    .Net 7 Native AOT 單文件 無依賴 跨平臺

    2022.11.18 Native AOT 正式發(fā)布,不再是 實驗性項目。 .Net 7 Console App WebApi 使用PublishAOT = true,直接編譯 成exe,無rutime依賴,智能裁剪,體積小,啟動快。 環(huán)境: 1.更新VS2022 到最新版本(支持.net 7) 2.VS2022 安裝 使用C++ 桌面開發(fā) ? 踩坑: 1.程序里一些 沒有應用到的 方法會被裁剪

    2024年02月04日
    瀏覽(95)
  • Net跨平臺UI框架Avalonia入門-安裝和使用

    Net跨平臺UI框架Avalonia入門-安裝和使用

    Avalonia UI是是Net的跨平臺UI框架,支持 Windows、Linux、iOS 和 Android,與Net其他UI框架相比,如WPF(Windows平臺)、MAUI跨平臺控件(Android、iOS、macOS 和 Windows),主要優(yōu)勢是支持Linux。在國產化的需求下,對于C#開發(fā)的程序員,Avalonia適合用來開發(fā)Linux的桌面客戶端。 v11版本已經發(fā)布

    2024年02月05日
    瀏覽(94)
  • 一個基于.NET Core開源、跨平臺的倉儲管理系統(tǒng)

    一個基于.NET Core開源、跨平臺的倉儲管理系統(tǒng)

    今天給大家推薦一個基于.NET Core開源、跨平臺的倉儲管理系統(tǒng),數(shù)據(jù)庫支持MSSQL/MySQL:ZEQP.WMS。 倉儲管理系統(tǒng)(Warehouse Management System,WMS)是一種用于管理和控制倉庫操作的軟件系統(tǒng),它可以幫助企業(yè)實現(xiàn)對倉庫內物品的跟蹤、存儲、揀選、包裝和發(fā)運等全過程管理,提高倉

    2024年02月21日
    瀏覽(912)
  • golang實現(xiàn)rpc方法一:使用net/rpc庫【不能跨平臺】

    golang實現(xiàn)rpc方法一:使用net/rpc庫【不能跨平臺】

    使用golang官方的net/rpc庫實現(xiàn)RPC方法,使用http作為RPC的載體,通過http/net包監(jiān)聽客戶端連接請求。 rpc服務端實現(xiàn)代碼serverrpc.go如下 上述服務端程序運行之后,將會監(jiān)聽本地的8090端口,我們可以實現(xiàn)一個客戶端程序,連接服務端并且實現(xiàn)RPC方法調用。 rpc客戶端實現(xiàn)代碼clientr

    2024年01月17日
    瀏覽(91)
  • 【微軟技術棧】基于.NET MAUI跨平臺電子白板的設計與實現(xiàn)

    【微軟技術?!炕?NET MAUI跨平臺電子白板的設計與實現(xiàn)

    1、摘 要 隨著科技的發(fā)展,電子白板功能已經普及到視頻會議、在線課堂、企業(yè)、學校乃至其他更多行業(yè)。在多種移動設備并存的大環(huán)境下,為每個平臺(如:Android、IOS、Windows等)都編寫一套代碼,無論是前期開發(fā)還是后期維護,成本都會增加。另一方面,移動互聯(lián)網經過

    2024年02月06日
    瀏覽(111)
  • Net跨平臺UI框架Avalonia入門-安裝和使用(v11版本)

    Net跨平臺UI框架Avalonia入門-安裝和使用(v11版本)

    avalonia v11 版本發(fā)布了,增加了很多新的功能,Avalonia的擴展也同步升級了。 主要更新內容: 輔助功能:增加了對各種輔助工具的支持,提高了Avalonia應用程序的可用性。 輸入法編輯器(IME)支持:允許在所有語言中使用屏幕鍵盤和輸入。 合成渲染器:提供更強大、高效和靈

    2024年02月09日
    瀏覽(124)
  • 一個基于.NET Core構建的簡單、跨平臺、模塊化的商城系統(tǒng)

    一個基于.NET Core構建的簡單、跨平臺、模塊化的商城系統(tǒng)

    今天大姚給大家分享一個基于.NET Core構建的簡單、跨平臺、模塊化、完全開源免費(MIT License)的商城系統(tǒng):Module Shop。 商品:分類、品牌、單位、選項(銷售屬性)、屬性、屬性模板、屬性組。 銷售:訂單、物流。 內容:首頁配置、評論、回復。 配置:國家、用戶、倉庫

    2024年03月27日
    瀏覽(1131)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包