0

現在、C#でコンソールアプリケーションを作成しています(将来的にはWindowsフォームアプリケーションに移行する予定です。必要に応じてすぐに作成します)。私の現在の目的は、マトリックス(現在のサイズ52x42)を画像(ビットマップ、jpeg、png、柔軟)としてエクスポートし、マトリックスの各値(0、1、2、3)を白で表現することです。 、サイズ20px x 20pxの黒、青、または赤の正方形で、各「セル」を1px幅のグリッドで区切ります。

これはコンソールアプリケーションでも実行できますか?もしそうなら、どのように実行しますか?そうでない場合、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 に答える