gpt4 book ai didi

c# - 如何裁剪带有旋转矩形的图像?

转载 作者:太空狗 更新时间:2023-10-29 21:54:34 25 4
gpt4 key购买 nike

我有一个 System.Drawing.Bitmap 形式的图像和一个 4 点形式的矩形(Vector2,它们被简单地转换为 PointFs).

我想使用这些点裁剪出图像的一部分。我找到了 this answer这与我想要的非常接近,但我不确定如何从中获得正确的矩阵。

这是我到目前为止所得到的:

protected static Bitmap CropImage(Bitmap src, Vector2[] rect)
{
var width = (rect[1] - rect[0]).Length;
var height = (rect[3] - rect[0]).Length;
var result = new Bitmap(M2.Round(width), M2.Round(height));
using (Graphics g = Graphics.FromImage(result))
{
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
using (Matrix mat = new Matrix())
{
// ????
}
}
return result;
}

我怎样才能从我的矩形中得到正确的变换矩阵?

最佳答案

它与链接的答案相同,但不是:

mat.Translate(-rect.Location.X, -rect.Location.Y);
mat.RotateAt(angle, rect.Location);

你会使用:

double angle = Math.Atan2(rect[1].Y - rect[0].Y, rect[1].X - rect[0].X);
mat.Translate(-rect[0].X, -rect[0].Y);
mat.RotateAt((float)angle, rect[0]);

(或者类似的东西。它可能是 -angle,或者 rect[0] 而不是 rect[1],反之亦然-Atan2 中的反之亦然。我无法立即检查...)

关于c# - 如何裁剪带有旋转矩形的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15711083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com