![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать, сколько экранных точек в сантиметре? [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);
точек в дюйме