Главная » 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; } Все структуры здесь используются для понятности, в реальном коде их выгоднее заменить на вектора. |
|
Всего комментариев: 0 | |