Mam obraz w postaci System.Drawing.Bitmap
i prostokąt w postaci 4 punktów (Vector2
s, które są trywialnie konwertowane na PointF
s).Jak przyciąć obraz za pomocą obróconego prostokąta?
Chcę użyć tych punktów, aby wykadrować część obrazu. Znalazłem this answer, który jest bardzo zbliżony do tego, co chcę, ale nie jestem pewien, jak uzyskać odpowiednią matrycę z niego.
Oto co mam do tej pory:
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;
}
Jak mogę uzyskać odpowiednią macierz transformacji z moim rect?
Wymyśliłem coś bardzo podobnego, ale jest trochę za późno. – mpen