У меня есть графический интерфейс Winforms на С#, который позволяет пользователю рисовать прямоугольник на дисплее tiff и сохранять положение, высоту, ширину и т. д. В основном, я хочу сделать сохраненную позицию, высоту и ширину прямоугольника и закрепите эту область в sep. растровое изображение, которое затем можно передать в sep. метод, который просто распознает новый клип растрового изображения. Как лучше всего это сделать?
Как вырезать прямоугольник из tiff?
Ответы (2)
Используйте Graphics.DrawImage(), чтобы скопировать выделенную часть исходного изображения. Вам понадобится перегрузка, которая принимает исходный и конечный прямоугольники. . Создайте экземпляр Graphics из Graphics.FromImage() на новом растровом изображении того же размера, что и прямоугольник.
public static Bitmap CropImage(Image source, Rectangle crop) {
var bmp = new Bitmap(crop.Width, crop.Height);
using (var gr = Graphics.FromImage(bmp)) {
gr.DrawImage(source, new Rectangle(0, 0, bmp.Width, bmp.Height), crop, GraphicsUnit.Pixel);
}
return bmp;
}
person
Hans Passant
schedule
08.03.2010
Также убедитесь, что вы управляете прямоугольником кадрирования в относительных процентах, а не в абсолютных значениях, если вы масштабируете отображение исходного изображения.
- person Jacob G; 09.03.2010
Используйте Bitmap.Clone() для создания копия обрезанного региона.
public Bitmap ClipBitmap(Bitmap src, Rectangle crop)
{
return src.Clone(crop, src.PixelFormat);
}
person
Tarsier
schedule
17.03.2010