2011-11-02 109 views
2

我試圖從2維布爾數組中繪製一個bmp圖像文件。目標是以下我需要爲每個值繪製一個小方形,並且顏色取決於布爾值,如果爲true,則以給定顏色繪製,如果爲false,則繪製白色。 這個想法是創建一個基於矩陣的迷宮從一個二維數組用c#繪製一個.bmp#

我在網上找到的大多數解決方案都是使用MemoryStream的1維字節數組,但是我並沒有繪製出一個大小與我選擇的完整正方形。

我的主要問題是如何在一個bmp或圖像使用C#繪製

先感謝您的任何意見

+1

你的平臺是什麼? Silverlight的? WPF?的WinForms? asp.net? (等)解決方案可能取決於此信息。 –

回答

2

下面是使用2維數組並保存結果位圖的解決方案。您必須從文本文件中讀取迷宮,或者像我一樣手動輸入。您可以使用squareWidthsquareHeight變量來調整貼圖的大小。使用一維數組也可以,但如果您剛剛瞭解這些內容,可能不那麼直觀。

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"); 
} 
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繪畫,希望這個例子給你必要的基礎知識。

相關問題