RotateFlip を使用して、スプライトを水平方向に反転しています。画像ではなくGraphicsを描画する際にRotateFlipが適用されているようです。
問題は、(スプライトの方向に応じて) 反転する必要のあるスプライトとそうでないスプライトがあることです。反転したスプライトを描画するたびに画像を複製したくありません。
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
。