0
我在C# 被开发Windows应用程序,在C#转换这个程序有三个按钮(打开,保存,灰度) 并具有图片框在应用插入图像,灰度和擦拭
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Imaging;
namespace MyFirstWindowsApplication
{
public partial class Form1 : Form
{
Bitmap newbitmap;
Bitmap newbitmap2;
Bitmap outp;
Image file;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
DialogResult dr = openFileDialog1.ShowDialog();
if (dr == DialogResult.OK)
{
file = Image.FromFile(openFileDialog1.FileName);
newbitmap = new Bitmap(openFileDialog1.FileName);
newbitmap2 = new Bitmap(openFileDialog1.FileName);
outp = new Bitmap(openFileDialog1.FileName);
pictureBox1.Image = file;
}
}
private void button2_Click(object sender, EventArgs e)
{
DialogResult dr = saveFileDialog1.ShowDialog();
if (dr == DialogResult.OK)
{
if (newbitmap != null)
{
if (saveFileDialog1.FileName.Substring(saveFileDialog1.FileName.Length - 3).ToLower() == "bmp")
{
newbitmap.Save(saveFileDialog1.FileName, ImageFormat.Bmp);
}
if (saveFileDialog1.FileName.Substring(saveFileDialog1.FileName.Length - 3).ToLower() == "jpg")
{
newbitmap.Save(saveFileDialog1.FileName, ImageFormat.Bmp);
}
if (saveFileDialog1.FileName.Substring(saveFileDialog1.FileName.Length - 3).ToLower() == "bmp")
{
newbitmap.Save(saveFileDialog1.FileName, ImageFormat.Jpeg);
}
if (saveFileDialog1.FileName.Substring(saveFileDialog1.FileName.Length - 4).ToLower() == "jpeg")
{
newbitmap.Save(saveFileDialog1.FileName, ImageFormat.Jpeg);
}
if (saveFileDialog1.FileName.Substring(saveFileDialog1.FileName.Length - 3).ToLower() == "png")
{
newbitmap.Save(saveFileDialog1.FileName, ImageFormat.Png);
}
if (saveFileDialog1.FileName.Substring(saveFileDialog1.FileName.Length - 3).ToLower() == "gif")
{
newbitmap.Save(saveFileDialog1.FileName, ImageFormat.Gif);
}
}
else
{
MessageBox.Show("you need to open file first");
}
}
}
private void button3_Click(object sender, EventArgs e)
{
for (int x = 0; x < newbitmap.Width; x++)
{
for (int y = 0; y < newbitmap.Height; y++)
{
Color originalColor = newbitmap.GetPixel(x, y);
int grayscale = (int)((originalColor.R * .3) + (originalColor.G * .59) + (originalColor.B * .11));
Color newColor = Color.FromArgb(grayscale, grayscale, grayscale);
newbitmap.SetPixel(x, y, newColor);
}
}
int tmax = 10;
int xmax=newbitmap.Width;
int ymax=newbitmap.Height;
for (int t = 0; t <= tmax; t += 1)
{
for (int x = 0; x < xmax; x++)
{
for (int y = 0; y < ymax; y++)
{
if ((x/xmax) > (t/tmax))
{
Color originalco = newbitmap2.GetPixel(x, y);
outp.SetPixel(x, y, originalco);
}
else
{
Color originalco3 = newbitmap.GetPixel(x, y); ;
outp.SetPixel(x, y, originalco3);
}
pictureBox1.Image = outp;
}
}
}
}
}
}
显示图片
问题是犯规使擦拭过渡
不,我没有意味着灰度,因为它与我的代码工作我的意思是第三个循环包含擦拭过渡它应该工作,但我不知道是问题 – 2012-07-11 07:57:04
没有人所有的代码是与我合作 我只想要第三个循环的正确语法 – 2012-07-11 08:02:06
@ OmarAl-hamawi:阅读我编辑的答案。无论如何,你的代码是错误的,所以看看它。我的灰度代码更高效。您的保存例程具有两次bmp,并且不使用正确的路径功能来获取文件扩展名。 :) – Marco 2012-07-11 08:06:05