Rotateflip - когда это применяется?
Вопрос
Я использую Rotateflip, чтобы перевернуть спрайты горизонтально. Похоже, что Rotateflip применяется, когда графика нарисована не изображение.
Проблема в том, что некоторые спрайты должны быть перевернуты и некоторые не (в зависимости от направления спрайта). Я не хочу клонировать изображение каждый раз, когда я рисую перевернутый спрайт.
Решение
Рассмотреть возможность использования матрицы трансформации на Graphics
объект вместо использования RotateFlip
на рисунке. Переверните эквивалентно масштабированию координат X или Y на -1. Вы можете предварительно вычислить одну матрицу Flip и использовать его всякий раз, когда вы хотите:
Matrix flipX = new Matrix();
flipX.Scale(-1, 1);
graphics.Transform = flipX;
// Draw your sprite here
graphics.ResetTransform();
Обратите внимание, однако, что вам придется пройти в модифицированные координаты при рисовании, например. используя вышеупомянутый преобразование, вам придется пройти в ContainerWidth - X
вместо X
.