Я решил поиграть с XNA для Windows Phone 7, и для моей первой игры мне нужно взять изображение и разбить его на квадратные спрайты, чтобы изображение по существу превратилось в лист спрайтов. Исходное изображение, вероятно, будет слишком большим или маленьким для экрана, поэтому я сделал следующее, чтобы понять, как применить масштаб, чтобы он уместился на экране, но без каких-либо пропусков (так что одно измерение может выйти за пределы экран).
Texture = content.Load<Texture2D>(assetName);
var width = Texture.Bounds.Width;
var height = Texture.Bounds.Height;
var widthDifference = width - screenWidth;
var heightDifference = height - screenHeight;
if (widthDifference < 0 || heightDifference < 0)
{
if (widthDifference < heightDifference)
Scale = (float) screenWidth/width;
else
Scale = (float) screenHeight/height;
}
else
{
if (widthDifference > heightDifference)
Scale = (float) screenWidth/width;
else
Scale = (float) screenHeight/height;
}
if (Scale < 0)
Scale = Scale*-1;
Но затем мне нужно создать спрайты из этого изображения, которые аккуратно заполняют экран в сетке. Я предполагаю, что мой главный вопрос заключается в том, что когда я вызываю свой метод рисования для каждого спрайта, применяется ли масштабирование к исходному листу спрайта или только к самому спрайту после получения его текстуры из листа спрайта?
Если это последнее, я немного озадачен тем, как лучше масштабировать лист спрайтов перед созданием моих отдельных спрайтов. Я могу в конечном итоге на самом деле сначала изменить размер изображения, чтобы он точно соответствовал размерам экрана, чтобы облегчить жизнь, но это кажется немного тяжелым.
Любые предложения приветствуются!