2010-10-09 2 views
0

Я использую RotateFlip для перевода спрайтов по горизонтали. Кажется, что RotateFlip применяется, когда Graphics рисуется не изображение.RotateFlip - когда применяется?

Проблема в том, что некоторые спрайты нужно перевернуть, а некоторые нет (в зависимости от направления спрайта). Я не хочу клонировать изображение каждый раз, когда я рисую перевернутый спрайт.

ответ

1

Рассмотрите возможность использования матрицы преобразования на объекте Graphics вместо использования RotateFlip на изображении. Переворот эквивалентен масштабированию координат X или Y на -1. Вы можете предварительно рассчитать единую матрицу флипа и использовать его всякий раз, когда вы хотите:

Matrix flipX = new Matrix(); 
flipX.Scale(-1, 1); 

graphics.Transform = flipX; 
// Draw your sprite here 
graphics.ResetTransform(); 

Однако обратите внимание, что вы должны передать в измененных координатах при рисовании, например, для. используя вышеуказанное преобразование, вам нужно будет пройти ContainerWidth - X вместо X.

Смежные вопросы