после этого, игра запускается в полноэкранном режиме, НО! т.к. я поставил ширину 1300, а у меня монитор 1280*1024 , то правая часть игры не видна (остается за пределами экрана) , и кроме этого, снизу остается белое пространство (белое ,потому что у меня: GraphicsDevice.Clear(Color.White);)
Так вот, как сделать так, чтоб не смотря на большие разрешения (1300*896), полноэкранный режим был нормальным ? (не знаю как еще сказать.)
Сообщение отредактировал arthurfok - Суббота, 04 Августа 2012, 16:12
Так вот, как сделать так, чтоб не смотря на большие разрешения (1300*896), полноэкранный режим был нормальным ? (не знаю как еще сказать.)
Как ты себе это представляешь? Игра растягивается на заданный формат, а твой экран ему не соответствует... Почему бы не сделать окно размером с экран пользователя? *Не убегай от снайпера, умрешь уставшим. *Мои статьи...
Сообщение отредактировал Stalker_Shooter - Суббота, 04 Августа 2012, 20:24
правая часть игры не видна (остается за пределами экрана) , и кроме этого, снизу остается белое пространство
Возможно данные проблемы из-за того, что фоновой рисунок не вписывается в 1300*896 пикселей (ширина больше, а высота меньше), а спрайт рисуется по размеру текстуры.
не совсем понял понятие правая часть игры? Поясни пожалуйста. И что значит нормальный полноэкраный рижим? Ну а вообще, как сделать так, чтобы вид интерфейса был более менее нормальным вне зависемсти от разрешения, наверное придумывать велосипед и не стоит. Просто интерфейсу добавить некое "выравнивание". - для фонового рисунка, могу предложить: ориентируемся на то,что высота экрана всегда меньше длины (для PC). Длина зависит от формата. Фоновая текстура берётся максимально широкая, чтобы угодить самым широкоформатным мониторам. Тогда, нам надо подогнать высоту спрайта под высоту экрана, пропорционально этому изменить ширину спрайта и отодвинуть его, так чтобы центр текстуры остался в центре экрана.
пример:
Глобально обьявляем:
Code
Texture2D FonText1; Rectangle FonRect;
В LoadContent пишем:
Code
// загружаем текстуры FonText1 = Content.Load<Texture2D>("Default\\SPI_TT"); // расчитываем коэфицент, для пропорции // *1F - умножение на единицу формата float, иначе результат округляется float Proporsion = (graphics.PreferredBackBufferHeight*1F)/(FonText1.Height); // расчитываем прямоуголььник для спрайта FonRect = new Rectangle( Convert.ToInt32((graphics.PreferredBackBufferWidth - FonText1.Width * Proporsion) / 2), // узнаем разницу между размером экрана и изменённого размера спрайта и сдвигаем наполовину 0, // прижато к верхнему краю Convert.ToInt32(FonText1.Width * Proporsion), // пропорционально меняем ширину graphics.PreferredBackBufferHeight); // высота равна высоте экрана
Convert.ToInt32((graphics.PreferredBackBufferWidth - FonText1.Width * Proporsion) / 2) - узнаем разницу между размером экрана и изменённого размера спрайта и сдвигаем наполовину В Drow:
У меня работает. ПРОВЕРЕННО! но жучков ещё никто не отменял, так что если что, пиши. НО, есть способ по эфективней - пересчитывать прямоугольник не только для спрайта, ни и для текстуры внутри этого спрайта (1 раз чуть больше посчитать, зато всегда меньше рисовать). думаю если тут разберёшься, то сам сделаешь.
для выравнивания элементов управления думаю немного другой принцип: тут или просто располагать из "от края", располагая в точке Point(высота, ширина экрана - отступ). При этом размер менять и пересчитывать смысла особого нет. просто делать размер текстур максимально удобным при среднем разрешении. Ну или дополнительно растягивать до определённого растояния к краю экрана. Но тут расчётов больше... да и текстуры тогда должна в идеале просто приоткрываться, а не тянуться вместе со спрайтом.
А вообще могу и подумать, и подробно в статье всё выложить, если многим нужно. P.S Сам с XNA знакомлюсь, C# знаю отлично ну или немного (всё относительно), идей много. Думай, что говоришь. Говори, что думаешь.
Сообщение отредактировал VolkodavAD - Понедельник, 06 Августа 2012, 18:43
VolkodavAD, ты написал много полезного , спасибо тебе за это. а на счет статьи, думаю такая проблема возникает у многих, которые не знают как решить,и многим будет интересны они . так что, я за