1ceberg, Да, ты прав, это "не по правилам". Но тут хотел сделать как бы эфект выхода из темноты, (пока не очень получилось, но буду править), вечером может ещё пару часиков за ним посижу. Думай, что говоришь. Говори, что думаешь.
Может рановато, вдруг её ущё дорисовывать буду... ну а вдруг нет. Если есть замечания, пишите. Есть тут для меня на кого ровняться, и поучиться. Сразу в аватарку запихал ). Думай, что говоришь. Говори, что думаешь.
Сообщение отредактировал VolkodavAD - Четверг, 09 Августа 2012, 12:54
Во первых, что значит "воспринимала везде"? У тебя 5 - 8 полей для её ввода? Шикарно было бы узреть код. по поводу "программа закрывается" - похоже на необработанное исключение, как если бы строку - "3687р5" конвертировать в Int, или другой несоответствующий формат. Но данных недостаточно. Думай, что говоришь. Говори, что думаешь.
правая часть игры не видна (остается за пределами экрана) , и кроме этого, снизу остается белое пространство
Возможно данные проблемы из-за того, что фоновой рисунок не вписывается в 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
уважаемый allxumuk, а не подскажите ли, где именно подходящий раздел? Посмотрел форум пару раз, так и не понял Может, просто, невнимательно... но глаза уже замылины совсем. Думай, что говоришь. Говори, что думаешь.