2013-11-01 114 views
0

我正在寫一個C#程序來對圖像中的像素進行一些掃描。這是一個程序,我只會跑5次,所以不需要高效。當我操縱它時顯示圖像

讀完每個像素後,我想更改它的顏色並更新圖像的顯示,以便我可以看到掃描進度以及找到的內容,但我無法顯示任何內容。有沒有人做過這樣的事情,或知道一個很好的例子?

編輯: 我正試圖使用​​的代碼是。

void Main() 
{ 
    Bitmap b = new Bitmap(@"C:\test\RKB2.bmp"); 
    Form f1 = new Form(); 
    f1.Height = (b.Height /10); 
    f1.Width = (b.Width/10); 
    PictureBox PB = new PictureBox(); 
    PB.Image = (Image)(new Bitmap(b, new Size(b.Width, b.Height))); 
    PB.Size = new Size(b.Width /10, b.Height /10); 
    PB.SizeMode = PictureBoxSizeMode.StretchImage; 
    f1.Controls.Add(PB); 
    f1.Show(); 
    for(int y = 0; y < b.Height; y++) 
    { 
     for(int x = 0; x < b.Width; x++) 
     { 
      if(b.GetPixel(x,y).R == 0 && b.GetPixel(x,y).G == 0 && b.GetPixel(x,y).B == 0) 
      { 
       //color is black 
      } 
      if(b.GetPixel(x,y).R == 255 && b.GetPixel(x,y).G == 255 && b.GetPixel(x,y).B == 255) 
      { 
       //color is white 
       Bitmap tes = (Bitmap)PB.Image; 
       tes.SetPixel(x, y, Color.Yellow); 
       PB.Image = tes; 
      } 
     } 

    } 
} 
+1

你可以添加一些代碼來顯示你到目前爲止做了什麼? – littleimp

+2

這是一個WPF應用程序,或其他什麼? –

+0

WinForms?使用'PictureBox'? –

回答

0

您需要分離圖像處理操作和更新操作。一個好的開始是創建一個Windows窗體項目,將PictureBox控件添加到窗體和一個按鈕。將按鈕綁定到一個動作並在動作中開始處理。然後更新過程將可見。當你的代碼更改爲這一點,那麼最終的改造應該是可見的:

void Main() 
{ 
    Bitmap b = new Bitmap(@"C:\test\RKB2.bmp"); 
    Form f1 = new Form(); 
    f1.Height = (b.Height /10); 
    f1.Width = (b.Width/10); 
    // size the form 
    f1.Size = new Size(250, 250); 
    PictureBox PB = new PictureBox(); 
    PB.Image = (Image)(new Bitmap(b, new Size(b.Width, b.Height))); 
    PB.Size = new Size(b.Width /10, b.Height /10); 
    PB.SizeMode = PictureBoxSizeMode.StretchImage; 
    PB.SetBounds(0, 0, 100, 100); 
    Button start = new Button(); 
    start.Text = "Start processing"; 
    start.SetBounds(100, 100, 100, 35); 
    // bind the button Click event 
    // The code could be also extracted to a method: 
    // private void startButtonClick(object sender, EventArgs e) 
    // and binded like this: start.Click += startButtonClick; 
    start.Click += (s, e) => 
    { 
     for(int y = 0; y < b.Height; y++) 
     { 
      for(int x = 0; x < b.Width; x++) 
      { 
       if(b.GetPixel(x,y).R == 0 && b.GetPixel(x,y).G == 0 && b.GetPixel(x,y).B == 0) 
       { 
        //color is black 
       } 
       if(b.GetPixel(x,y).R == 255 && b.GetPixel(x,y).G == 255 && b.GetPixel(x,y).B == 255) 
       { 
        //color is white 
        Bitmap tes = (Bitmap)PB.Image; 
        tes.SetPixel(x, y, Color.Yellow); 
        PB.Image = tes; 
       } 
      } 
     } 
    }; 
    f1.Controls.Add(PB); 
    f1.Controls.Add(start); 
    f1.Show(); 
} 

改變的結果(與我的測試圖像)經過是這樣的:

test form

+0

他沒有提到這是WinForms,WebForms,控制檯還是別的。 –