位圖用於創建和存儲計算機圖形。位圖圖像廣泛用於網頁和數字設備,如相機、智能手機等。最常見的位圖圖形文件類型是 BMP、GIF、PNG 和 JPEG。在本文中,我們將學習如何在 C# 中創建位圖。
本文應涵蓋以下主題:
用於創建、加載、填充和繪製位圖的 C# API - 免費下載
要創建位圖,我們將使用 Aspose.Drawing for .NET API。它是一個跨平台的 2D 圖形庫,用於以編程方式繪製文本、幾何圖形和圖像。它允許加載、保存和操作支持的文件格式。
請下載 API 的 DLL 或使用 NuGet 安裝它。
PM> Install-Package Aspose.Drawing
在 C# 中創建一個新的位圖
我們可以按照下面給出的步驟從頭開始創建一個新的位圖:
- 首先,使用具有指定大小和格式的 Bitmap 類創建一個新位圖。
- 接下來,使用 FromImage() 方法從 Bitmap 對象創建一個新的 Graphics 對象。
- 然後,用指定的顏色和大小初始化一個 Pen 類對象。
- 之後調用DrawEllipse()方法繪製一個指定大小的橢圓。
- 最後,使用 Save() 方法保存輸出圖像。
以下代碼示例顯示瞭如何在 C# 中創建新的位圖。
// 此代碼示例演示如何在 C# 中以編程方式創建新位圖。
// 初始化位圖對象
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
// 創建一個新的圖形
Graphics graphics = Graphics.FromImage(bitmap);
// 初始化一支筆
Pen pen = new Pen(Color.Red, 5);
// 畫一個長方形
graphics.DrawEllipse(pen, new Rectangle(0, 0, 700, 700));
// 保存文件
bitmap.Save(@"C:\Files\Drawings\output.png");
在 C# 中從字節數組創建位圖
我們可以按照以下步驟從內存流字節創建位圖:
- 將圖像文件讀入字節數組。
- 使用字節數組對象創建 MemoryStream 的新實例。
- 使用帶有 MemoryStream 對象的 Bitmap 類創建一個新的位圖。
- 最後,使用 Save() 方法保存圖像。
以下代碼示例展示瞭如何在 C# 中使用 MemoryStream 從字節數組創建位圖。
// 此代碼示例演示如何在 C# 中從內存流字節創建新位圖。
// 加載圖像並讀取所有字節
var file = File.ReadAllBytes(@"C:\Files\Drawings\sample.jpg");
// 創建內存流
MemoryStream stream = new MemoryStream(file);
// 創建一個新的位圖
Bitmap bitmap = new Bitmap(stream);
// 保存文件
bitmap.Save(@"C:\Files\Drawings\output.jpg");
C# 將位圖保存到文件
我們可以按照前面提到的步驟將位圖圖像保存到各種支持的文件格式的文件中。但是,我們只需要在最後一步使用 Save(string filename, ImageFormat format) 方法保存圖像文件時提及所需的保存文件格式擴展名。
- 將位圖另存為 BMP 文件
bitmap.Save(@"C:\Files\output.bmp", ImageFormat.Bmp);
- 將位圖另存為 PNG 文件
bitmap.Save(@"C:\Files\output.png", ImageFormat.Png);
- 將位圖另存為 JPG 文件
bitmap.Save(@"C:\Files\output.jpg", ImageFormat.Jpeg);
- 將位圖另存為 GIF 文件
bitmap.Save(@"C:\Files\output.gif", ImageFormat.Gif);
C# 在位圖上繪製
我們可以按照前面提到的步驟在位圖上繪製各種形狀和圖像。然而,我們只需要使用特定於形狀的方法來繪製所需的形狀。
我們可以使用提供的特定方法在位圖上繪製以下形狀:
- 圓弧:我們可以使用 DrawArc() 方法繪製圓弧。
- 貝塞爾曲線:我們可以使用 DrawBezier() 方法繪製貝塞爾曲線。
- 一系列貝塞爾樣條曲線:我們可以使用 DrawBeziers() 方法繪製一系列貝塞爾樣條曲線。
- 曲線:我們可以使用 DrawCurve() 方法繪製曲線形狀。
- ClosedCurve:我們可以使用 DrawClosedCurve() 方法繪製閉合曲線。
- 橢圓:我們可以使用 DrawEllipse() 方法繪製橢圓。
- 線:我們可以使用 DrawLine() 方法繪製一條線。
- 一系列線條:我們可以使用 DrawLines() 方法繪製一系列線條。
- 路徑:我們可以使用 DrawPath() 方法繪製路徑。
- 餅圖:我們可以使用 DrawPie() 方法繪製餅圖。
- 多邊形:我們可以使用 DrawPolygon() 方法繪製多邊形。
- 矩形:我們可以使用 DrawRectangle() 方法繪製矩形。
- 一系列矩形:我們可以使用 DrawRectangles() 方法繪製一系列矩形。
我們可以使用以下方法在位圖上繪製圖像:
- Icon:我們可以使用DrawIcon()方法在Rectangle結構指定的區域內繪製指定Icon代表的圖像。
- 圖像:我們可以使用 DrawImage() 方法繪製任何指定的圖像。
C# 在位圖上繪製文本
我們可以按照以下步驟在位圖上繪製任何字符串:
- 首先,使用具有指定大小的 Bitmap 類創建一個新位圖。
- 接下來,使用 FromImage() 方法從 Bitmap 對象創建一個新的 Graphics 對象。
- 然後,定義一個具有所需字體系列、樣式和大小的 Font 類對象。
- 同時,初始化一個指定顏色的SolidBrush對象。
- 之後,以要顯示的文本、Font 和 Brush 對像作為參數調用 DrawString() 方法。
- 最後,使用 Save() 方法保存輸出圖像。
下面的代碼示例顯示瞭如何在 C# 中的位圖上繪製文本。
// 此代碼示例演示如何在 C# 中以編程方式在新位圖上繪製文本。
// 初始化位圖對象
Bitmap bitmap = new Bitmap(500,200);
// 創建一個新的圖形
Graphics graphics = Graphics.FromImage(bitmap);
// 初始化字體
var font = new Font(FontFamily.GenericSerif, 40f, FontStyle.Bold);
// 初始化畫筆
var brush = new SolidBrush(Color.Red);
// 畫一個長方形
graphics.DrawString("Welcome to Bitmap!", font, brush, 10, 20);
// 保存文件
bitmap.Save(@"C:\Files\Drawings\output.png", ImageFormat.Png);
在 C# 中用純色填充位圖
我們可以使用填充矩形填充純色位圖,並按照以下步驟將其保存在新位圖中:
- 首先,使用具有指定大小的 Bitmap 類創建一個新位圖。
- 接下來,使用 FromImage() 方法從 Bitmap 對象創建一個新的 Graphics 對象。
- 然後,用指定的位置和大小初始化一個 Rectangle 類對象。
- 之後,使用畫筆顏色和矩形調用 FillRectangle() 方法。
- 最後,使用 Save() 方法保存輸出圖像。
下面的代碼示例顯示瞭如何在 C# 中使用矩形以純色填充位圖。
// 此代碼示例演示如何在 C# 中創建帶有填充矩形的新位圖。
// 初始化指定大小的位圖
Bitmap bitmap = new Bitmap(500, 500);
// 創建一個新的圖形
Graphics graph = Graphics.FromImage(bitmap);
// 定義一個矩形
Rectangle ImageSize = new Rectangle(0, 0, 500, 500);
// 畫一個填充的矩形
graph.FillRectangle(Brushes.Gray, ImageSize);
// 保存文件
bitmap.Save(@"C:\Files\Drawings\output.png");
使用 C# 在位圖中加載圖像
我們還可以按照以下步驟在位圖中加載現有圖像並將其另存為新位圖:
- 首先,使用 Bitmap 類加載圖像。
- 接下來,使用具有指定大小的 Bitmap 類創建一個新位圖。
- 然後,使用 FromImage() 方法從新創建的 Bitmap 對象創建一個新的 Graphics 對象。
- 之後,以圖像和位置坐標作為參數調用 DrawImage() 方法。
- 最後,使用 Save() 方法保存輸出圖像。
下面的代碼示例顯示瞭如何使用 C# 在位圖中加載圖像。
// 此代碼示例演示如何將圖像加載到位圖中並將其另存為新位圖。
// 加載圖像:
Bitmap image = new Bitmap(@"C:\Files\Drawings\sample.jpg");
// 初始化指定大小的位圖
Bitmap bitmap = new Bitmap(1000, 1000);
// 創建一個新的圖形
Graphics graphics = Graphics.FromImage(bitmap);
// 在指定位置繪製圖像
graphics.DrawImage(image, 10, 10);
// 保存文件
bitmap.Save(@"C:\Files\Drawings\output.png");
如何在 C# 中使用位圖調整圖像大小
我們可以按照以下步驟在位圖中加載現有圖像並調整其大小並將其另存為新位圖:
- 使用 Bitmap 類加載現有圖像。
- 使用具有加載圖像和指定大小的 Bitmap 類創建新位圖。
- 最後,使用 Save() 方法保存輸出圖像。
以下代碼示例顯示如何調整現有圖像的大小並將其另存為 C# 中的新位圖。
// 此代碼示例演示如何在 C# 中創建調整現有圖像的大小並創建新的位圖。
// 加載圖像:
Bitmap image = new Bitmap(@"C:\Files\Drawings\sample.jpg");
// 創建一個大小為加載圖像一半的新位圖:
Bitmap bitmap = new Bitmap(image, (int)(image.Width * 0.5), (int)(image.Height * 0.5));
// 保存文件
bitmap.Save(@"C:\Files\Drawings\output.jpg");
獲得免費的臨時許可證
您可以獲得免費的臨時許可證 試用 Aspose.Drawing for .NET,沒有評估限制。
結論
在本文中,我們學習瞭如何:
- 創建一個新的位圖;
- 在位圖上繪製矩形、橢圓等;
- 加載現有圖像;
- 調整現有圖像的大小並創建具有新大小的新位圖;
- 將 MemoryStream 或字節數組中的位圖圖像保存到文件中;
- 在 C# 中設置位圖的寬度和高度。
除了在 C# 中創建新位圖外,您還可以使用 文檔 了解更多有關 Aspose.Drawing for .NET 的信息,並探索 API 支持的各種功能。如有任何疑問,請隨時通過我們的免費支持論壇與我們聯繫。