
نوشته شده توسط
adabyron
سلام.
قبلش بگم که کلی توی سایت جستجو کردم و چون چیزی پیدا نکردم این تاپیک رو زدم.
من توی برنامم از اسکنر برای اسکن عکس استفاده می کنم. عکس بعد از اسکن در یک picturebox نمایش داده میشه حالا میخوام قسمتی از عکس را که مورد نظره با استفاده از ماوس انتخاب و در مسیر دلخواه با پسوند jpg یا bmp ذخیره کنم . ممنون میشم در این زمینه راهنماییم کنید .
من این کد رو همین الان فی البداهه نوشتم و بهینه نیست. اما شاید بتونید ازش - یه کوچولو - ایده بگیرید :
(یک کنترل PictureBox و یک دکمه روی فرم داشته باشید و به آدرس تصویر در Form Load هم توجه داشته باشید)
private Point startLocation;
private Rectangle rect;
private bool flagDraw = false;
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
flagDraw = true;
startLocation = e.Location;
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
flagDraw = false;
rect.X = startLocation.X;
rect.Width = e.X - startLocation.X;
rect.Y = startLocation.Y;
rect.Height = e.Y - startLocation.Y;
DrawRectangle(rect);
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (!flagDraw)
return;
rect.X = startLocation.X;
rect.Width = e.X - startLocation.X;
rect.Y = startLocation.Y;
rect.Height = e.Y - startLocation.Y;
DrawRectangle(rect);
}
private void DrawRectangle(Rectangle _rect)
{
pictureBox1.Refresh();
Graphics flat = pictureBox1.CreateGraphics();
flat.DrawRectangle(new Pen(Brushes.Red, 2), _rect);
}
private void btnCrop_Click(object sender, EventArgs e)
{
pictureBox1.Refresh();
Bitmap bmp = new Bitmap(pictureBox1.Image);
pictureBox1.Image = bmp.Clone(rect, System.Drawing.Imaging.PixelFormat.Undefined);
}