public static PointF Convert_ONE_point_scale_for_save(this PictureBox pb, PointF Input_array_point) { var imageRect = pb.GetImageRectangle(); var image = pb.Image; float scaleX = (float)image.Width / imageRect.Width; float scaleY = (float)image.Height / imageRect.Height; PointF _Array_return = new PointF(); _Array_return.X = Scale((int)Input_array_point.X - imageRect.X, scaleX, image.Width); _Array_return.Y = Scale((int)Input_array_point.Y - imageRect.Y, scaleY, image.Height); return(_Array_return); }
public static Rectangle CropImage(this PictureBox pb, int x, int y, int w, int h) { var imageRect = pb.GetImageRectangle(); var image = pb.Image; float scaleX = (float)image.Width / imageRect.Width; float scaleY = (float)image.Height / imageRect.Height; var cropRect = new Rectangle(); cropRect.X = Scale(x - imageRect.X, scaleX, image.Width); cropRect.Y = Scale(y - imageRect.Y, scaleY, image.Height); cropRect.Width = Scale(w, scaleX, image.Width - cropRect.X); cropRect.Height = Scale(h, scaleY, image.Height - cropRect.Y); //var result = new Bitmap(cropRect.Width, cropRect.Height, image.PixelFormat); //using (var g = Graphics.FromImage(result)) // g.DrawImage(image, new Rectangle(new Point(0, 0), cropRect.Size), cropRect, GraphicsUnit.Pixel); //return result; return(cropRect); }
public static PointF[] Convert_point_scale_for_save(this PictureBox pb, PointF[] Input_array_point) { PointF[] _Array_return = new PointF[4]; var imageRect = pb.GetImageRectangle(); var image = pb.Image; float scaleX = (float)image.Width / imageRect.Width; float scaleY = (float)image.Height / imageRect.Height; PointF Temp; for (int i = 0; i < 4; i++) { Temp = new PointF(); Temp.X = Scale((int)Input_array_point[i].X - imageRect.X, scaleX, image.Width); Temp.Y = Scale((int)Input_array_point[i].Y - imageRect.Y, scaleY, image.Height); _Array_return[i] = Temp; } return(_Array_return); }