Я хочу повернуть растровое изображение вокруг заданной точки, и эта точка станет новым центром растрового изображения.
Вот то, что я попробовал вначале
Bitmap rotate(Bitmap img, float angle, int cx, int cy)
{
Bitmap result = new Bitmap(img.Width, img.Height);
int middleX = img.Width / 2,
middleY = img.Height / 2;
using (Graphics g = Graphics.FromImage(result))
{
g.Clear(Color.Black);
g.TranslateTransform(cx, cy);
g.RotateTransform(angle);
g.TranslateTransform(-cx, -cy);
g.TranslateTransform(middleX - cx, middleY - cy); //shift (cx, cy) to be at the center, does not work
g.DrawImage(originalImage, new Point(0, 0));
}
return result;
}
Но когда я иду, чтобы перевестиизображение после поворота, перевод находится в оригинальном пространстве вместо этого нового повернутого пространства и не получается правильно.Я попробовал практически все комбинации вещей, о которых мог подумать без удачи.Результаты поиска описывают только то, как вращаться вокруг точки.
Исходное изображение (красная точка - это точка вращения) -
После поворота на 45 градусовизображение должно быть переведено так, чтобы красная точка была центром изображения