Главная » 2009 » Ноябрь » 6 » Разрешение экрана программы C и C++
08:06
Разрешение экрана программы C и C++

При переносе программ с системы на систему обычно возникает множество проблем. Одна из наиболее заметных - изменение разрешения экрана. Если программа создавалась при одном разрешении, а исполняется при другом, то размер ее окна, букв, кнопок и т.п. будет неправильный. Этого можно частично избежать, вставив следующий код в событие OnCreate необходимой формы:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
//эта структура будет содержать разрешение экрана на системе
struct res{float x,y;}res;
/*здесь будет хранится коэфицент, показывающий во сколько раз
текущее разрешение больше исходного*/
struct factor{float x,y;}factor;
//считать текущее разрешение
res.x=Screen->Width;
res.y=Screen->Height;
//вычислить коэфицент. Если программа пишется при другом разрешении,
//то нужно только подставить его вместо 1024 и 768
factor.x=1024/res.x;
factor.y=768/res.y;
int cc=ControlCount-1; //количество объектов на форме
while(cc!=-1) //для каждого объекта выполняем следующие операции
{
Controls[cc]->Left/=factor.x; //правильно располагаем по горизонтали
Controls[cc]->Top/=factor.y; //:по вертикали
Controls[cc]->Width/=factor.x; //растягиваем до нужной ширины
Controls[cc]->Height/=factor.y; //:высоты
cc--;
}
//теперь растягиваем саму форму
Form1->Width/=factor.x;
Form1->Height/=factor.y;
//изменяем размер шрифтов; не забудьте поставить свойство формы Scaled=true
Form1->PixelsPerInch=Screen->PixelsPerInch;
}
Все структуры здесь используются для понятности, в реальном коде их выгоднее заменить на вектора.
Категория: Программирование | Просмотров: 1320 | Добавил: admin | Рейтинг: 5.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]