private void btn_getpixelinfo_Click(object sender, EventArgs e)
        {
            Viewer.UpdateTextCallback UpdateText = Pixel_Info;
            int X = 0, Y = 0;

            X = Convert.ToInt32(tb_pinfo_x.Text);
            Y = Convert.ToInt32(tb_pinfo_y.Text);
            int Rotate_X = 0, Rotate_Y = 0;

            Rotate_X       = (Viewer.rotate_degree == 180) ? Viewer.bmp0.Width - 1 - X : (Viewer.rotate_degree == 270) ? Y : (Viewer.rotate_degree == 90) ? Viewer.bmp0.Width - 1 - Y : X;
            Rotate_Y       = (Viewer.rotate_degree == 180) ? Viewer.bmp0.Height - 1 - Y : (Viewer.rotate_degree == 270) ? Viewer.bmp0.Height - 1 - X : (Viewer.rotate_degree == 90) ? X : Y;
            Viewer.Mouse.X = Rotate_X;
            Viewer.Mouse.Y = Rotate_Y;


            Viewer.Save_current_tobackup();
            Color pixel = Viewer.bmp_backup.GetPixel(Rotate_X, Rotate_Y);

            Invoke(UpdateText, new Object[] { null, $"X : {X}, Y : {Y}, {pixel.ToString()} ", null, null });
            Sample_draw.Update_DisplayRange(Rotate_X / 4, Rotate_Y / 4);
            Sample_draw.Refresh();
            if (Viewer.DisplayByGL)
            {
                gL_Drawer.Refresh();
            }
        }
示例#2
0
        protected override void OnMouseUp(MouseEventArgs s)
        {
            Viewer.UpdateTextCallback UpdateText = FPD.Form_Main.form_display.Pixel_Info;
            if (((MouseEventArgs)s).Button == MouseButtons.Left)
            {
                Viewer.Save_current_tobackup();
                try
                {
                    int X = 0, Y = 0;
                    X = ((MouseEventArgs)s).X;
                    Y = ((MouseEventArgs)s).Y;
                    int Rotate_X = 0, Rotate_Y = 0;
                    Rotate_X = (Viewer.rotate_degree == 180) ? this.Width - X : (Viewer.rotate_degree == 90) ? Y : (Viewer.rotate_degree == 270) ? this.Height - Y : X;
                    Rotate_Y = (Viewer.rotate_degree == 180) ? this.Height - Y : (Viewer.rotate_degree == 90) ? this.Width - X : (Viewer.rotate_degree == 270) ? X : Y;
                    int zoomx = 0, zoomy = 0;
                    zoomx = Convert.ToInt32(Rotate_X * 2 * Viewer.ZoomIn_Ratio);
                    zoomy = Convert.ToInt32(Rotate_Y * 2 * Viewer.ZoomIn_Ratio);
                    int shiftx = 0, shifty = 0;
                    shiftx = Convert.ToInt32(zoomx + (Viewer.Display_Range_L + 1) / 2 * Viewer.bmp0.Width);
                    shifty = Convert.ToInt32(zoomy + (1 - (Viewer.Display_Range_T + 1) / 2) * Viewer.bmp0.Height);
                    Color pixel = Viewer.bmp_backup.GetPixel(shiftx, shifty);
                    Invoke(UpdateText, new Object[] { null, $"X : {shiftx}, Y : {shifty}, Gray Value : {pixel.GetBrightness() * 255} ", null, null });

                    Viewer.Mouse.X = Convert.ToInt32(Convert.ToInt32(((MouseEventArgs)s).X * 2 * Viewer.ZoomIn_Ratio) + (Viewer.Display_Range_L + 1) / 2 * Viewer.bmp0.Width);      //zoom + shift
                    Viewer.Mouse.Y = Convert.ToInt32(Convert.ToInt32(((MouseEventArgs)s).Y * 2 * Viewer.ZoomIn_Ratio) + (1 - (Viewer.Display_Range_T + 1) / 2) * Viewer.bmp0.Height);
                    Viewer.ROI_X_2 = shiftx;
                    Viewer.ROI_Y_2 = shifty;

                    if (Viewer.Mouse.X < Viewer.Temp_ROI_x)
                    {
                        Viewer.ROI_DrawRange_L = Viewer.Mouse.X;
                        Viewer.ROI_DrawRange_R = Viewer.Temp_ROI_x;
                    }
                    else
                    {
                        Viewer.ROI_DrawRange_L = Viewer.Temp_ROI_x;
                        Viewer.ROI_DrawRange_R = Viewer.Mouse.X;
                    }

                    if (Viewer.Mouse.Y < Viewer.Temp_ROI_y)
                    {
                        Viewer.ROI_DrawRange_T = Viewer.Mouse.Y;
                        Viewer.ROI_DrawRange_D = Viewer.Temp_ROI_y;
                    }
                    else
                    {
                        Viewer.ROI_DrawRange_T = Viewer.Temp_ROI_y;
                        Viewer.ROI_DrawRange_D = Viewer.Mouse.Y;
                    }

                    base.OnMouseUp(s);
                }
                catch (Exception e)
                {
                }
            }
        }
示例#3
0
        public override void glDraw()
        {
            freash_count++;
            BitmapData     bmpData;
            ImageConverter converter = new ImageConverter();

            GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer
            OpenGL.glLoadIdentity();
            GL.glBindTexture(GL.GL_TEXTURE_2D, texID[0]);
            GL.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST);
            GL.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST);
            GL.glEnable(GL.GL_TEXTURE_2D);

            GL.glColor3f(1.0f, 1.0f, 1.0f);
            switch (Viewer.nDataFrameNum)
            {
            case 0:
                Viewer.bmp0.RotateFlip(RotateFlipType.RotateNoneFlipY);
                bmpData = Viewer.bmp0.LockBits(new Rectangle(0, 0, Viewer.bmp0.Width, Viewer.bmp0.Height), ImageLockMode.ReadOnly, PixelFormat.Format8bppIndexed);
                GL.glTexImage2D(GL.GL_TEXTURE_2D, 0, (int)GL.GL_LUMINANCE, Viewer.bmp0.Width, Viewer.bmp0.Height, 0, GL.GL_LUMINANCE, GL.GL_UNSIGNED_BYTE, bmpData.Scan0);
                //Viewer.input = new byte[bmpData.Stride * bmpData.Height];
                //Marshal.Copy(bmpData.Scan0, Viewer.input, 0, bmpData.Stride * bmpData.Height);
                Viewer.bmp0.UnlockBits(bmpData);
                break;

            case 1:
                Viewer.bmp1.RotateFlip(RotateFlipType.RotateNoneFlipY);
                bmpData = Viewer.bmp1.LockBits(new Rectangle(0, 0, Viewer.bmp1.Width, Viewer.bmp1.Height), ImageLockMode.ReadOnly, PixelFormat.Format8bppIndexed);
                GL.glTexImage2D(GL.GL_TEXTURE_2D, 0, (int)GL.GL_LUMINANCE, Viewer.bmp1.Width, Viewer.bmp1.Height, 0, GL.GL_LUMINANCE, GL.GL_UNSIGNED_BYTE, bmpData.Scan0);
                //Viewer.input = new byte[bmpData.Stride * bmpData.Height];
                //Marshal.Copy(bmpData.Scan0, Viewer.input, 0, bmpData.Stride * bmpData.Height);
                Viewer.bmp1.UnlockBits(bmpData);
                break;

            case 2:
                Viewer.bmp2.RotateFlip(RotateFlipType.RotateNoneFlipY);
                bmpData = Viewer.bmp2.LockBits(new Rectangle(0, 0, Viewer.bmp2.Width, Viewer.bmp2.Height), ImageLockMode.ReadOnly, PixelFormat.Format8bppIndexed);
                GL.glTexImage2D(GL.GL_TEXTURE_2D, 0, (int)GL.GL_LUMINANCE, Viewer.bmp2.Width, Viewer.bmp2.Height, 0, GL.GL_LUMINANCE, GL.GL_UNSIGNED_BYTE, bmpData.Scan0);
                //Viewer.input = new byte[bmpData.Stride * bmpData.Height];
                //Marshal.Copy(bmpData.Scan0, Viewer.input, 0, bmpData.Stride * bmpData.Height);
                Viewer.bmp2.UnlockBits(bmpData);
                break;

            case 9:
                bmpData = Viewer.bmp_backup.LockBits(new Rectangle(0, 0, Viewer.bmp_backup.Width, Viewer.bmp_backup.Height), ImageLockMode.ReadOnly, PixelFormat.Format8bppIndexed);
                GL.glTexImage2D(GL.GL_TEXTURE_2D, 0, (int)GL.GL_LUMINANCE, Viewer.bmp_backup.Width, Viewer.bmp_backup.Height, 0, GL.GL_LUMINANCE, GL.GL_UNSIGNED_BYTE, bmpData.Scan0);
                //Viewer.input = new byte[bmpData.Stride * bmpData.Height];
                //Marshal.Copy(bmpData.Scan0, Viewer.input, 0, bmpData.Stride * bmpData.Height);
                Viewer.bmp_backup.UnlockBits(bmpData);
                break;

            default:
                break;
            }
            Viewer.Save_current_tobackup();
            //TN();
            Drawsquare(Viewer.rotate_degree);
            GL.glDisable(GL.GL_TEXTURE_2D);
            if (Viewer.Cursor)
            {
                double x_ratio  = ((double)Viewer.Mouse.X / Viewer.bmp0.Width) * 2 - 1;
                double y_ratio  = (1 - ((double)Viewer.Mouse.Y / Viewer.bmp0.Height)) * 2 - 1;
                double x_cursor = (x_ratio - Viewer.Display_Range_L) / (2 * Viewer.ZoomIn_Ratio);
                double y_cursor = (y_ratio - Viewer.Display_Range_D) / (2 * Viewer.ZoomIn_Ratio);
                GL.glColor3f(1.0f, 0.0f, 0.0f);
                GL.glBegin(GL.GL_LINES);
                GL.glVertex2d(x_cursor * 2 - 1, -1);
                GL.glVertex2d(x_cursor * 2 - 1, 1);
                GL.glEnd();
                GL.glBegin(GL.GL_LINES);
                GL.glVertex2d(-1, y_cursor * 2 - 1);
                GL.glVertex2d(1, y_cursor * 2 - 1);
                GL.glEnd();
            }
            if (Viewer.ROI)
            {
                DrawROIRange();
            }

            if (Viewer.FPS_Enable)
            {
                this.glPrint(0, this.Size.Height - 20, "FPS :" + Viewer.FPS.ToString("f4"));
            }
            GC.Collect();
            GL.glFlush();
            GL.glFinish();
        }