我正在尝试从2维布尔数组中绘制bmp图像文件。目标是以下我需要为每个值绘制一个小方块,颜色取决于布尔值,如果为真,它以给定颜色绘制,如果为假,则绘制白色。 我们的想法是基于矩阵创建一个迷宫
我在网上找到的大多数解决方案都是使用MemoryStream的1维字节数组,但我没有绘制一个大小与我选择的完整正方形。
我的主要问题是如何使用c#
绘制bmp或图像提前感谢任何建议
答案 0 :(得分:2)
这是一个使用二维数组并保存结果位图的解决方案。您必须从文本文件中读取迷宫,或者像我一样手动输入。您可以使用squareWidth
,squareHeight
变量调整切片的大小。使用一维数组也可以,但如果您只是了解这些事情,可能不会那么直观。
bool[,] maze = new bool[2,2];
maze[0, 0] = true;
maze[0, 1] = false;
maze[1, 0] = false;
maze[1, 1] = true;
const int squareWidth = 25;
const int squareHeight = 25;
using (Bitmap bmp = new Bitmap((maze.GetUpperBound(0) + 1) * squareWidth, (maze.GetUpperBound(1) + 1) * squareHeight))
{
using (Graphics gfx = Graphics.FromImage(bmp))
{
gfx.Clear(Color.Black);
for (int y = 0; y <= maze.GetUpperBound(1); y++)
{
for (int x = 0; x <= maze.GetUpperBound(0); x++)
{
if (maze[x, y])
gfx.FillRectangle(Brushes.White, new Rectangle(x * squareWidth, y * squareHeight, squareWidth, squareHeight));
else
gfx.FillRectangle(Brushes.Black, new Rectangle(x * squareWidth, y * squareHeight, squareWidth, squareHeight));
}
}
}
bmp.Save(@"c:\maze.bmp");
}
答案 1 :(得分:0)
我不确定你的输出设计是什么,但这可能会让你开始使用GDI。
int boardHeight=120;
int boardWidth=120;
int squareHeight=12;
int squareWidth=12;
Bitmap bmp = new Bitmap(boardWidth,boardHeight);
using(Graphics g = Graphics.FromImage(bmp))
using(SolidBrush trueBrush = new SolidBrush(Color.Blue)) //Change this color as needed
{
bool squareValue = true; // or false depending on your array
Brush b = squareValue?trueBrush:Brushes.White;
g.FillRectangle(b,0,0,squareWidth,squareHeight);
}
您需要根据输出图像的要求对其进行扩展并迭代数组,但由于您指出主要问题是开始使用.Net绘图,所以希望这个示例为您提供必要的基础知识。< / p>