【发布时间】:2010-03-08 22:24:28
【问题描述】:
我有一个 C# 中的 Winforms Gui,它允许用户在 tiff 的显示器上绘制一个矩形并保存位置、高度、宽度等。 基本上,我想要做的是获取矩形的保存位置、高度和宽度,并将该区域剪辑成一个 sep。然后可以传递给 sep 的位图。仅 OCR 位图的新剪辑的方法。 最好的方法是什么?
【问题讨论】:
我有一个 C# 中的 Winforms Gui,它允许用户在 tiff 的显示器上绘制一个矩形并保存位置、高度、宽度等。 基本上,我想要做的是获取矩形的保存位置、高度和宽度,并将该区域剪辑成一个 sep。然后可以传递给 sep 的位图。仅 OCR 位图的新剪辑的方法。 最好的方法是什么?
【问题讨论】:
使用 Graphics.DrawImage() 复制源图像的选择部分。你需要the overload,它带有一个源矩形和一个目标矩形。通过 Graphics.FromImage() 在与矩形大小相同的新位图上创建 Graphics 实例。
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;
}
【讨论】:
使用Bitmap.Clone() 创建裁剪区域的副本。
public Bitmap ClipBitmap(Bitmap src, Rectangle crop)
{
return src.Clone(crop, src.PixelFormat);
}
【讨论】: