CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 2 of 2
  1. #1
    Join Date
    Dec 2012
    Posts
    7

    c# buttons not working

    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.

    Code:
    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);
            }
        }
    }
    Name:  designer_sized.jpg
Views: 643
Size:  19.9 KB

  2. #2
    Join Date
    Dec 2012
    Posts
    7

    Re: c# buttons not working

    have found solution

    the problem was on click-events

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured