using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Collections; public partial class ImageContainer : Form { private Image image; private Bitmap bitmap; private bool shouldPaint = false; private int startX = -1; private int startY; int endX; int endY; private Rectangle selectedROI = new Rectangle(-1,-1,0,0); public ImageContainer(Image im) { InitializeComponent(); image = im; bitmap = new Bitmap(image); } public ImageContainer(Bitmap b) { InitializeComponent(); bitmap = b; } public Image Image { get { return image; } set{ image = value;} } public Bitmap Bitmap { get { return bitmap; } set { bitmap = value; } } public Rectangle ROI { get { return selectedROI; } } private void ImageContainer_Paint(object sender, PaintEventArgs e) { Graphics graphics = e.Graphics; graphics.DrawImage(bitmap,0,0); } private void ImageContainer_MouseDown(object sender, MouseEventArgs e) { shouldPaint = true; Graphics graphics = CreateGraphics(); graphics.DrawImage(bitmap,0,0); } private void ImageContainer_MouseUp(object sender, MouseEventArgs e) { shouldPaint = false; startX = -1; } private void ImageContainer_MouseMove(object sender, MouseEventArgs e) { if (shouldPaint) { if (startX == -1) { startX = e.X; startY = e.Y; } else { endX = e.X; endY = e.Y; Graphics graphics = CreateGraphics(); graphics.DrawImage(bitmap,0,0); Pen whitePen = new Pen(Color.White, 1); graphics.DrawRectangle(whitePen, new Rectangle(startX, startY, endX - startX, endY - startY)); selectedROI.X = startX; selectedROI.Y = startY; selectedROI.Width = endX - startX; selectedROI.Height = endY - startY; } } } }