猿问

用C#写的一个小的图片编辑器,不知道哪错了,代码没错,运行不出结果

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using System.IO ;

namespace 图片浏览器

{

    public partial class Form1 : Form

    {

        //不知道变量类型也没有错

        String str;//当前打开的图片的绝对路径存放地址

        int k;//打开文件夹下已经排好序的第k张照片

        int size;//文件夹下的图片文件个数

        string[] strfiles;//文件夹下的所有图片地址

        public Form1()

        {

            InitializeComponent();

        }


        private void OpenToolStripMenuItem1_Click(object sender, EventArgs e)//打开单张照片

        {

            OpenFileDialog OpenFileDialog = new OpenFileDialog();

            OpenFileDialog.Filter = "jpg文件(*.jpg)|*.ipg|bmp文件(*.bmp)|*.bmp|png文件(*.png)|*.png";

            if (OpenFileDialog.ShowDialog() == DialogResult.OK)

            {

                this.pictureBox1.Image = System.Drawing.Image.FromFile(OpenFileDialog.FileName);

                str = OpenFileDialog.FileName;

                this.SaveToolStripMenuItem.Visible = true;

                this.FormatChangeToolStripMenuItem.Visible = true;

                this.EditToolStripMenuItem.Visible = true;

            }

        }


        private void OpenFolderToolStripMenuItem_Click(object sender, EventArgs e)//打开一个目录下的图片文件

        {

            int i = 0;

            for (int j = 0; j < 100; j++)

            {

                strfiles[j] = "";

            }

            FolderBrowserDialog n = new FolderBrowserDialog();

            if (n.ShowDialog() == DialogResult.OK)

            {

                try

                {

                    DirectoryInfo dir = new DirectoryInfo(n.SelectedPath);

                    FileInfo[] file1 = dir.GetFiles("*.jpg");

                    foreach (FileInfo str1 in file1)

                    {

                        strfiles[i] = str1.FullName.ToString();

                        i++;

                    }

                    FileInfo[] file2 = dir.GetFiles("*.bmp");

                    foreach (FileInfo str1 in file2)

                    {

                        strfiles[i] = str1.FullName.ToString();

                        i++;

                    }

                    FileInfo[] file3 = dir.GetFiles("*.png");

                    foreach (FileInfo str1 in file3)

                    {

                        strfiles[i] = str1.FullName.ToString();

                        i++;

                    }

                    size = i;

                    this.pictureBox1.Image = System.Drawing.Image.FromFile(strfiles[k]);

                    str = strfiles[k];

                    this.SaveToolStripMenuItem.Visible = true;

                    this.FormatChangeToolStripMenuItem.Visible = true;

                    this.EditToolStripMenuItem.Visible = true;

                }

                catch

                {

                    MessageBox.Show("没有图片文件", "警告", MessageBoxButtons.OK);

                }

            }

        }


        private void SaveToolStripMenuItem_Click(object sender, EventArgs e)//保存

        {

            SaveFileDialog saveFileDialog1 = new SaveFileDialog();

            saveFileDialog1.Filter = "jpg文件(*.jpg)|*.ipg|bmp文件(*.bmp)|*.bmp|png文件(*.png)|*.png";

            if (saveFileDialog1.ShowDialog() == DialogResult.OK)

            {

                this.pictureBox1.Image.Save(saveFileDialog1.FileName);

            }

        }

        

        private void GrayToolStripMenuItem_Click(object sender, EventArgs e)//灰度处理

        {

            try

            {

                Color c;

                int red, green, blue, cl;

                Bitmap befor = new Bitmap(pictureBox1.Image);

                Bitmap after = new Bitmap(befor);

                for (int i = 0; i < befor.Width; i++)

                {

                    for (int j = 0; j < befor.Height; j++)

                    {

                        c = befor.GetPixel(i, j);

                        red = c.R;

                        green = c.G;

                        blue = c.B;

                        cl = (red + green + blue) / 3;

                        Color cc = Color.FromArgb(cl, cl, cl);

                        after.SetPixel(i, j, cc);

                    }

                }

                this.pictureBox1.Image = after;

            }

            catch

            {

                MessageBox.Show("未加载图片", "警告", MessageBoxButtons.OK);

            }

        }

    }

}


三色堇忞
浏览 1936回答 1
1回答
随时随地看视频慕课网APP
我要回答