Нет кода, извините, но стратегия.
Вы должны иметь возможность создавать результирующее изображение путем выборки исходного изображения. Вы знаете угол поворота, так что теперь вам нужно создать функцию картографирования, которая отображает результат обратно на оригинал.
Код будет просто сканировать каждую строку результирующего изображения и отображать пиксель обратно в исходное изображение. Вы можете сделать простой;
for (int plotY = 0; plotY < resultHeight; plotY++)
{
for (int plotX = 0; plotX < resultWidth; plotX++)
{
resultImage.PlotPixel(getOriginalPixel(plotX, plotY, angleOfRotation));
}
}
Так что теперь нам просто нужен магический метод "getOriginalPixel", и вот тут-то и приходит математика.
Если мы повернем изображение на 0 градусов, тогда plotX, plotY - это просто X / Y исходного изображения. Но это не весело.
pickX = x * cos(angle) - y * sin(angle)
pickY = y * cos(angle) + x * sin(angle)
Я думаю, что будет соответствовать исходному пикселю. Вам нужно будет проверить, не вышло ли оно за пределы, и просто вернуть черный или что-то в этом роде:)