位图用于创建和存储计算机图形。位图图像广泛用于网页和数字设备,如相机、智能手机等。最常见的位图图形文件类型是 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 支持的各种功能。如有任何疑问,请随时通过我们的免费支持论坛与我们联系。