如何使用c#从图像中裁剪十字矩形

本文关键字:十字 裁剪 何使用 图像 | 更新日期: 2023-09-27 18:19:09

我想获得图像的一些特定部分,所以我正在裁剪图像。但是,当我想要得到与图像不平行的部分时,我会旋转图像并在之后进行裁剪。

我不想旋转图像并裁剪一个平行矩形。我想要的是,在不旋转图像的情况下,裁剪一个与图像有一定角度的矩形。

有办法吗?

我想我不能很好地表达我自己。这就是我想做的:示例图片。

假设红色的东西是一个矩形:)我想把它从图像中裁掉。裁剪后,它不需要角度。所以mj可以躺下了

如何使用c#从图像中裁剪十字矩形

这个方法应该执行您所要求的。

public static Bitmap CropRotatedRect(Bitmap source, Rectangle rect, float angle, bool HighQuality)
{
    Bitmap result = new Bitmap(rect.Width, rect.Height);
    using (Graphics g = Graphics.FromImage(result))
    {
        g.InterpolationMode = HighQuality ? InterpolationMode.HighQualityBicubic : InterpolationMode.Default;
        using (Matrix mat = new Matrix())
        {
            mat.Translate(-rect.Location.X, -rect.Location.Y);
            mat.RotateAt(angle, rect.Location);
            g.Transform = mat;
            g.DrawImage(source, new Point(0, 0));
        }
    }
    return result;
}

用法(以你的MJ为例):

Bitmap src = new Bitmap("C:''mjexample.jpg");
Rectangle rect = new Rectangle(272, 5, 100, 350);
Bitmap cropped = CropRotatedRect(src, rect, -42.5f, true);