2015-02-10 68 views
0

我正在從桌面加載圖像並希望將此圖像變爲灰度。但是當我按下按鈕時會顯示錯誤。在System.Drawing.dll中出現未處理的類型爲'System.ArgumentException'的異常,用於灰度

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Drawing.Imaging; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using System.Xml; 
using System.Windows.Forms.Layout; 

namespace OCRC 
{ 
    public partial class Form1 : Form 
    { 

     Bitmap newBitmap; 
     Image file; 
     bool opened = false; 


     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 

     } 

     private void toolStripMenuItem1_Click(object sender, EventArgs e) 
     { 

     } 

     private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e) 
     { 

     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      OpenFileDialog openFileDialog = new OpenFileDialog(); 
      DialogResult dr = openFileDialog.ShowDialog(); 
      //openFileDialog.Filter = "Image Files(*.jpg; *.jpeg; *.gif; *.bmp)|*.jpg; *.jpeg; *.gif; *.bmp; *.png; *.PNG"; 

      if(dr==DialogResult.OK) 
      { 
       file = Image.FromFile(openFileDialog.FileName); 
       newBitmap = new Bitmap(openFileDialog.FileName); 
       pictureBox1.Image = file; 
       opened = true; 
      } 
      } 

     private void button2_Click(object sender, EventArgs e) 
     { 

     } 

     private void button6_Click(object sender, EventArgs e) 
     { 
      int x, y; 

      for(x=0; x < newBitmap.Width; x++) 
      { 
       for(y=0; y < newBitmap.Height; y++) 
       { 
        Color originalColor = newBitmap.GetPixel(x, y); 
        int grayScale = (int)((originalColor.R * 3) + (originalColor.G * 0.59) + (originalColor.B * 0.11)); 

        Color newColor = Color.FromArgb(grayScale, grayScale, grayScale); 
        newBitmap.SetPixel(x, y, newColor); 

       } 
      } 

      pictureBox1.Image = newBitmap; 
     } 

     } 

} 

顯示在這條線System.ArgumentException

Color newColor = Color.FromArgb(grayScale, grayScale, grayScale); 
+0

請編輯您的問題,以包含'grayScale'的異常消息和值。 – 2015-02-10 02:05:42

回答

1

Color.FromArbg(int, int, int) RGB值必須是0之間和255或將引發ArgumentException。

+0

您對grayScale的公式有一個錯字,它應該讀取0.3的R組分權重,這樣R + B + G的權重總和爲1. – NLindbom 2015-02-10 02:18:40

+0

感謝NLindbom。這將是0.3。 – 2015-02-10 07:13:52

相關問題