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(); } }
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) { } } }
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(); }