0

我目前正在用 C# 制作控制台应用程序(将来将使用 Windows 窗体应用程序。如果需要,会尽快)。我目前的目标是将矩阵(当前大小 52x42)导出为图像(位图、jpeg、png,我很灵活),其中矩阵中的每个值(0、1、2、3)都被描绘为白色、黑色、蓝色或红色正方形,大小为 20 像素 x 20 像素,网格 1 像素宽分隔每个“单元格”。

这甚至可以在控制台应用程序中完成,如果可以,怎么做?如果不是,我需要什么让它在 Windows 窗体应用程序中工作?

4

2 回答 2

1

只需创建一个 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");
}
于 2012-11-17T16:58:12.277 回答
1

考虑使用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(...);
于 2012-11-17T21:07:32.910 回答