我目前正在用 C# 制作控制台应用程序(将来将使用 Windows 窗体应用程序。如果需要,会尽快)。我目前的目标是将矩阵(当前大小 52x42)导出为图像(位图、jpeg、png,我很灵活),其中矩阵中的每个值(0、1、2、3)都被描绘为白色、黑色、蓝色或红色正方形,大小为 20 像素 x 20 像素,网格 1 像素宽分隔每个“单元格”。
这甚至可以在控制台应用程序中完成,如果可以,怎么做?如果不是,我需要什么让它在 Windows 窗体应用程序中工作?
我目前正在用 C# 制作控制台应用程序(将来将使用 Windows 窗体应用程序。如果需要,会尽快)。我目前的目标是将矩阵(当前大小 52x42)导出为图像(位图、jpeg、png,我很灵活),其中矩阵中的每个值(0、1、2、3)都被描绘为白色、黑色、蓝色或红色正方形,大小为 20 像素 x 20 像素,网格 1 像素宽分隔每个“单元格”。
这甚至可以在控制台应用程序中完成,如果可以,怎么做?如果不是,我需要什么让它在 Windows 窗体应用程序中工作?
只需创建一个 52x42 像素的位图并使用与您的矩阵值对应的颜色填充它。
using System.Drawing;
void SaveMatrixAsImage(Matrix mat, string path)
{
using (var bmp = new Bitmap(mat.ColumnCount, mat.RowCount))
{
for (int r = 0; r != mat.RowCount; ++r)
for (int c = 0; c != mat.ColumnCount; ++c)
bmp.SetPixel(c, r, MakeMatrixColor(mat[r, c]));
bmp.Save(path);
}
}
Color MakeMatrixColor(int n)
{
switch (n)
{
case 0: return Color.White;
case 1: return Color.Black;
case 2: return Color.Blue;
case 3: return Color.Red;
}
throw new InvalidArgumentException("n");
}
考虑使用Graphics
允许您绘制线条和矩形等形状的对象。这比绘制单个像素要快
using (var bmp = new Bitmap(mat.ColumnCount, mat.RowCount)) {
using (var g = Graphics.FromImage(bmp)) {
....
g.FillRectangle(Brushes.Red, 0, 0, 20, 20);
....
}
}
bmp.Save(...);