c#按钮不起作用

c#按钮不起作用

本文介绍了c#按钮不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Hi.
I have a code which should allow for images to open in the form in c# but buttons 3 and 5 aren't working for some reason and I can't find the problem. The code executes ok, but when I press the buttons I get no response. The other 3 buttons, load image / load image / button 4, are all working correctly.
I have attached an image with the designer form on to show the layout. If anyone can advise me on what the problem is I would be very thankful.







using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing.Imaging;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;


namespace imageAlign
{

    public partial class IdentifySleeper : Form
    {
        Bitmap newImage1, newImage2, test;
        public static Bitmap Diff(Bitmap src1, Bitmap src2, int x1, int y1, int x2, int y2, int width, int height)
        {
            Bitmap diffBM = new Bitmap(width, height, PixelFormat.Format24bppRgb);

            for (int y = 0; y < height; y++)
            {
                for (int x = 0; x < width; x++)
                {
                    //Get Both Colours at the pixel point
                    Color col1 = src1.GetPixel(x1 + x, y1 + y);
                    Color col2 = src2.GetPixel(x2 + x, y2 + y);

                    //Get the difference RGB
                    int r = 0, g = 0, b = 0;
                    r = Math.Abs(col1.R - col2.R);



                    g = Math.Abs(col1.G - col2.G);
                    b = Math.Abs(col1.B - col2.B);

                    //Invert the difference average
                    int dif = ((r + g + b) / 3);

                    //Create new grayscale rgb colour
                    Color newcol = Color.FromArgb(dif, dif, dif);

                    diffBM.SetPixel(x, y, newcol);

                }
            }

            return diffBM;
        }


        public IdentifySleeper()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            OpenFileDialog ofd1 = new OpenFileDialog();

            if (ofd1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {

                pictureBox1.Image = Image.FromFile(ofd1.FileName);
                pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;

                // Grab the user's image and crop it to produce a sample image
                Bitmap k = (Bitmap)Image.FromFile(ofd1.FileName);
                Rectangle imageSection = new Rectangle(k.Width / 3, 0, k.Width / 3, k.Height);
                Bitmap kCropped = (Bitmap)k.Clone(imageSection, k.PixelFormat);

                // Array for keeping the sums of each row of pixels
                float[] resultArray = new float[kCropped.Height];

                // Populate the array with data from each row of pixels, using the brightness value
                for (int i = 0; i < kCropped.Height; i++)
                {
                    float value = 0;
                    for (int j = 0; j < kCropped.Width; j++)
                    {
                        value += kCropped.GetPixel(j, i).GetBrightness();
                    }
                    resultArray[i] = value;
                }

                // Obtain the maximum and minimum value of the sampled rows.
                float maxValue = 0;
                float minValue = float.MaxValue;
                for (int i = 1; i < resultArray.Length; i++)
                {
                    if (resultArray[i - 1] > maxValue) maxValue = resultArray[i - 1];
                    if (resultArray[i - 1] < minValue) minValue = resultArray[i - 1];

                }

                // Find the median value of each row, and use this to find upper and lower bounds for the image
                float midPoint = maxValue - minValue;
                float upperBound = (midPoint + maxValue) / 2;
                float lowerBound = (midPoint + minValue) / 2;

                int alignmentStart = 0;
                int alignmentFinish = 0;

                // Scan the result array for the start of the first sleeper
                for (int i = 0; i < resultArray.Length; i++)
                {
                    if (resultArray[i] > upperBound)
                    {
                        alignmentStart = i;
                        break;
                    }
                }

                // Scan the array from the place the last loop left off for the end of the sleeper
                for (int i = alignmentStart; i < resultArray.Length; i++)
                {
                    if (resultArray[i] < lowerBound)
                    {
                        alignmentFinish = i;
                        break;
                    }
                }

                // Using the start and end locations, we can now isolate the sleeper itself
                Rectangle alignedImage = new Rectangle(0, alignmentStart, k.Width, alignmentFinish - alignmentStart);

                Bitmap kAligned = (Bitmap)k.Clone(alignedImage, k.PixelFormat);

                Image image_rect = kAligned;


                image_rect.Save("good.jpg");

                // Put the sleeper in a picturebox for the user to see
                pictureBox3.Image = image_rect;
                pictureBox3.SizeMode = PictureBoxSizeMode.Zoom;



                // Get rid of unused images
                k.Dispose();
                kCropped.Dispose();
            }
        }




        private void IdentifySleeper_Load(object sender, EventArgs e)
        {



        }

        private void button2_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd2 = new OpenFileDialog();

            if (ofd2.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {

                pictureBox4.Image = Image.FromFile(ofd2.FileName);
                pictureBox4.SizeMode = PictureBoxSizeMode.Zoom;

                // Grab the user's image and crop it to produce a sample image
                Bitmap k = (Bitmap)Image.FromFile(ofd2.FileName);
                Rectangle imageSection = new Rectangle(k.Width / 3, 0, k.Width / 3, k.Height);
                Bitmap kCropped = (Bitmap)k.Clone(imageSection, k.PixelFormat);

                // Array for keeping the sums of each row of pixels
                float[] resultArray = new float[kCropped.Height];

                // Populate the array with data from each row of pixels, using the brightness value
                for (int i = 0; i < kCropped.Height; i++)
                {
                    float value = 0;
                    for (int j = 0; j < kCropped.Width; j++)
                    {
                        value += kCropped.GetPixel(j, i).GetBrightness();
                    }
                    resultArray[i] = value;
                }

                // Obtain the maximum and minimum value of the sampled rows.
                float maxValue = 0;
                float minValue = float.MaxValue;
                for (int i = 1; i < resultArray.Length; i++)
                {
                    if (resultArray[i - 1] > maxValue) maxValue = resultArray[i - 1];
                    if (resultArray[i - 1] < minValue) minValue = resultArray[i - 1];

                }

                // Find the median value of each row, and use this to find upper and lower bounds for the image
                float midPoint = maxValue - minValue;
                float upperBound = (midPoint + maxValue) / 2;
                float lowerBound = (midPoint + minValue) / 2;

                int alignmentStart = 0;
                int alignmentFinish = 0;

                // Scan the result array for the start of the first sleeper
                for (int i = 0; i < resultArray.Length; i++)
                {
                    if (resultArray[i] > upperBound)
                    {
                        alignmentStart = i;
                        break;
                    }
                }

                // Scan the array from the place the last loop left off for the end of the sleeper
                for (int i = alignmentStart; i < resultArray.Length; i++)
                {
                    if (resultArray[i] < lowerBound)
                    {
                        alignmentFinish = i;
                        break;
                    }
                }

                // Using the start and end locations, we can now isolate the sleeper itself
                Rectangle alignedImage = new Rectangle(0, alignmentStart, k.Width, alignmentFinish - alignmentStart);

                Bitmap kAligned = (Bitmap)k.Clone(alignedImage, k.PixelFormat);

                Image image_rect2 = kAligned;

                image_rect2.Save("bad.jpg");

                // Put the sleeper in a picturebox for the user to see
                pictureBox2.Image = image_rect2;
                pictureBox2.SizeMode = PictureBoxSizeMode.Zoom;



                // Get rid of unused images
                k.Dispose();
                kCropped.Dispose();
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            openFileDialog1.Filter = "JPEG IMAGES|*.jpg";
            openFileDialog1.InitialDirectory = "C:\\Users\\jason\\Documents\\IProject\\code\\imageAlign\\imageAlign\\bin\\Debug";
            openFileDialog1.Title = "Open Image";
            if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                // textBox1.Text = openFileDialog1.FileName;
                newImage1 = (Bitmap)(System.Drawing.Image.FromFile(openFileDialog1.FileName));
                pictureBox5.Width = newImage1.Width;
                pictureBox5.Height = newImage1.Height;
                pictureBox5.Image = newImage1;
                //pictureBox6.Location = new System.Drawing.Point(newImage1.Width + 40, pictureBox6.Location.Y);
            }
            //else
            //{
            //    textBox1.Text = "select file please";
            //}
            //}
        }

        //  private void textBox2_MouseHover(object sender, EventArgs e)
        //{

        //}


        private void button4_Click(object sender, EventArgs e)
        {
            openFileDialog1.Filter = "JPEG IMAGES|*.jpg";
            openFileDialog1.InitialDirectory = "C:\\Users\\jason\\Documents\\IProject\\code\\imageAlign\\imageAlign\\bin\\Debug";
            openFileDialog1.Title = "Open Image";
            if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                // textBox2.Text = openFileDialog1.FileName;
                newImage2 = (Bitmap)(System.Drawing.Image.FromFile(openFileDialog1.FileName));
                pictureBox6.Width = newImage2.Width;
                pictureBox6.Height = newImage2.Height;
                pictureBox6.Image = newImage2;
            }
            //else
            //{
            //    textBox2.Text = "select file please";
            //}
            //}
        }


        private void button5_Click(object sender, EventArgs e)
        {
            test = Diff(newImage1, newImage2, 0, 0, 0, 0, newImage1.Width, newImage1.Height);
            pictureBox7.Width = test.Width;
            pictureBox7.Height = test.Height;
            pictureBox7.Image = test;
            //pictureBox7.Location = new System.Drawing.Point(newImage1.Width + newImage2.Width + 80, pictureBox7.Location.Y);
        }
    }
}





[]

推荐答案




这篇关于c#按钮不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-11 06:25