У меня довольно большое (30 МБ) изображение, из которого я хотел бы вынуть небольшой «кусочек».Срез должен представлять повернутую часть исходного изображения.
Следующие работы, но углы пусты, и кажется, что я беру прямоугольную область исходного изображения, затем поворачиваю ее и рисую нане повернутая поверхность, приводящая к отсутствующим углам.
Мне нужен повернутый фрагмент исходного изображения, который затем рисуется на необращенной поверхности.Я знаю, что могу сначала повернуть исходное изображение, чтобы добиться этого, но это кажется неэффективным, учитывая его размер.
Есть предложения?Спасибо,
public Image SubImage(Image image, int x, int y, int width, int height, float angle)
{
var bitmap = new Bitmap(width, height);
using (Graphics graphics = Graphics.FromImage(bitmap))
{
graphics.TranslateTransform(bitmap.Width / 2.0f, bitmap.Height / 2.0f);
graphics.RotateTransform(angle);
graphics.TranslateTransform(-bitmap.Width / 2.0f, -bitmap.Height / 2.0f);
graphics.DrawImage(image, new Rectangle(0, 0, width, height), x, y, width, height, GraphicsUnit.Pixel);
}
return bitmap;
}