Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как узнать, сколько экранных точек в сантиметре? [D7, WinXP]


Ptr ©   (2003-11-26 17:50:00) 

Уважаемые мастера! Кто знает, как получить на экране отрезок, реальный размер которого 1 сантиметр???


Diamond Cat   (2003-11-27 23:45:00) [1]

Удалено модератором
Примечание: Offtopic


Anatoly Podgoretsky   (2003-11-27 10:51:00) [2]

Постоянной калибровкой монитора, при том именно постоянной, перед каждым использованием.


Ptr   (2003-11-27 10:50:00) [3]

ЭТО БЫЛО ЗДОРОВО !!!!
С П А С И Б О !!!!!!!!!!!!!!!!!!!!!!!


Jel   (2003-11-27 10:44:00) [4]


> как получить на экране отрезок, реальный размер которого
> 1 сантиметр


ИМХО - никак. Когда закончите вычисления и вывод на экран покрутите горизонтальный и вертикальный размеры органами управления монитора.


Игорь Шевченко   (2003-11-26 21:48:00) [5]

Сколько пикселов в сантиметре экрана:

(GetDeviceCaps(DC, HORZSIZE) * 10) div GetDeviceCaps(DC, HORZRES);


wicked   (2003-11-26 20:27:00) [6]

2 Ptr
так поставь "крупный шрифт" в настройках и погляди...
и в

> begin
> DC := GetDC(0);
> ScreenLogPixels := GetDeviceCaps(DC,logPixelsX div PixelsPerInch);
ReleaseDC(0, DC);
> ScreenLogPixels := MUlDiv(1,ScreenLogPixels,72);
> Label1.Caption := IntToStr(ScreenLogPixels);
> end;

не мешало бы добавить ReleaseDC(0, DC)- dc слишком ценный ресурс, чтоб так его разбазаривать...


Ptr   (2003-11-26 19:34:00) [7]

Так не меняется вот в чем дело !!!


Reindeer Moss Eater   (2003-11-26 19:24:00) [8]

Канечна будет


Ptr   (2003-11-26 19:18:00) [9]

Если в результате кода
DC := GetDC(0);
ScreenLogPixels := GetDeviceCaps(DC,LOGPIXELSY);
Result := MUlDiv(1,ScreenLogPixels,72);
"Мы получили сколько пунктов приходится на один дюйм при текущем разрешении" то вопрос в том: будет ли меняться конечная величина Result при изменении разрешения?


Reindeer Moss Eater   (2003-11-26 19:00:00) [10]

размер шрифтов измеряется в пунктах.
1 дюйм = 72 пункта.
Сколько пунктов приходится на один дюйм при текущем разрешении мы получили.

Читаем исходный вопрос:
как получить на экране отрезок, реальный размер которого 1 сантиметр???

Сложность с переводом дюймов в сантиметры?


Ptr   (2003-11-26 18:52:00) [11]

Извините за тупость, но я надеялся получить разний результат на разном разрешении, о результат один и тот же...

procedure TForm1.Button1Click(Sender: TObject);
Var
DC: HDC;
ScreenLogPixels: integer;
begin
DC := GetDC(0);
ScreenLogPixels := GetDeviceCaps(DC,logPixelsX div PixelsPerInch);
ScreenLogPixels := MUlDiv(1,ScreenLogPixels,72);
Label1.Caption := IntToStr(ScreenLogPixels);
end;


Reindeer Moss Eater   (2003-11-26 18:15:00) [12]

Хочу_постоянный_размер_шрифта_на_всех_разрешениях := 10;

Font.Size:= - MUlDiv(Хочу_постоянный_размер_шрифта_на_всех_разрешениях,ScreenLogPixels,72);


Ptr   (2003-11-26 18:09:00) [13]

Получается, что ScreenLogPixels - не зависит от разрешения экрана, тогда как узнать при каком разрешении это справедливо, чтобы потом пересчитать на установленное разрешение ???


Ptr   (2003-11-26 17:58:00) [14]

СПАСИБО !


Reindeer Moss Eater   (2003-11-26 17:55:00) [15]

DC:=GetDC(0);
ScreenLogPixels:=GetDeviceCaps(DC,LOGPIXELSY);

точек в дюйме


Наверх

Титульная страница Поиск, карта сайта Написать письмо