Вопрос

Я использую 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top