我試圖從2維布爾數組中繪製一個bmp圖像文件。目標是以下我需要爲每個值繪製一個小方形,並且顏色取決於布爾值,如果爲true,則以給定顏色繪製,如果爲false,則繪製白色。 這個想法是創建一個基於矩陣的迷宮從一個二維數組用c#繪製一個.bmp#
我在網上找到的大多數解決方案都是使用MemoryStream的1維字節數組,但是我並沒有繪製出一個大小與我選擇的完整正方形。
我的主要問題是如何在一個bmp或圖像使用C#繪製
先感謝您的任何意見
我試圖從2維布爾數組中繪製一個bmp圖像文件。目標是以下我需要爲每個值繪製一個小方形,並且顏色取決於布爾值,如果爲true,則以給定顏色繪製,如果爲false,則繪製白色。 這個想法是創建一個基於矩陣的迷宮從一個二維數組用c#繪製一個.bmp#
我在網上找到的大多數解決方案都是使用MemoryStream的1維字節數組,但是我並沒有繪製出一個大小與我選擇的完整正方形。
我的主要問題是如何在一個bmp或圖像使用C#繪製
先感謝您的任何意見
下面是使用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");
}
我不知道你的輸出設計將是什麼,但是這可能讓你從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繪畫,希望這個例子給你必要的基礎知識。
你的平臺是什麼? Silverlight的? WPF?的WinForms? asp.net? (等)解決方案可能取決於此信息。 –