private void button1_Click(object sender, EventArgs e) { UpdatePicBoxEventHandle UpdatePicBox = new UpdatePicBoxEventHandle(SetBrightness); Image img = pictureBox1.Image; for (int i =-255; i < 256; i++) { UpdatePicBox.BeginInvoke(img.Clone() as Bitmap, i, new AsyncCallback(UpdatePicBoxCallBack), UpdatePicBox); } } delegate Image UpdatePicBoxEventHandle(Image img, int contrast); public void UpdatePicBoxCallBack(IAsyncResult result) { if (result.IsCompleted) { UpdatePicBoxEventHandle updatepicbox = result.AsyncState as UpdatePicBoxEventHandle; using (Image img = updatepicbox.EndInvoke(result) as Image) { //img.Save(Guid.NewGuid().ToString() + ".jpg"); pictureBox2.Image = new Bitmap(img); } } } /// <summary> /// 设置亮度 /// </summary> /// <param name="img">图片</param> /// <param name="brightness">-255到+255之间的数值</param> /// <returns>改变的图片</returns> public Image SetBrightness(Image img, int brightness) { using (Bitmap tmp = (Bitmap)img) { if (brightness < -255) brightness = -255; if (brightness > 255) brightness = 255; Color c; //遍历图像像素 for (int i = 0; i < tmp.Width; i++) { for (int j = 0; j < tmp.Height; j++) { c = tmp.GetPixel(i, j); int R = c.R + brightness; int G = c.G + brightness; int B = c.B + brightness; if (R < 0) R = 1; if (R > 255) R = 255; if (G < 0) G = 1; if (G > 255) G = 255; if (B < 0) B = 1; if (B > 255) B = 255; //重新设置像素颜色 tmp.SetPixel(i, j, Color.FromArgb((byte)R, (byte)G, (byte)B)); } } return (Bitmap)tmp.Clone(); } }