Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.06;
Скачать: CL | DM;

Вниз

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

 
Ptr   (2003-11-26 17:50) [0]

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


 
Reindeer Moss Eater ©   (2003-11-26 17:55) [1]

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

точек в дюйме


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

СПАСИБО !


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

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


 
Reindeer Moss Eater ©   (2003-11-26 18:15) [4]

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

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


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

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

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 19:00) [6]

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

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

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


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

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


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

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


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

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


 
wicked ©   (2003-11-26 20:27) [10]

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 слишком ценный ресурс, чтоб так его разбазаривать...


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

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

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


 
Jel ©   (2003-11-27 10:44) [12]


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


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


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

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


 
Anatoly Podgoretsky ©   (2003-11-27 10:51) [14]

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


 
Diamond Cat ©   (2003-11-27 23:45) [15]

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



Страницы: 1 вся ветка

Текущий архив: 2004.02.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.03 c
14-16632
Undert
2004-01-14 22:33
2004.02.06
WD


1-16324
Rude
2004-01-23 20:29
2004.02.06
Как сделать чтобы TShellTreeView не проверял готовность диска А:.


6-16579
Пакет
2003-11-30 16:28
2004.02.06
У меня файл запускается


1-16502
mvgfirst
2004-01-21 17:45
2004.02.06
Переопределить метод InternalPost компонента TCustomADODataSet


1-16328
Крутыш
2004-01-24 23:13
2004.02.06
Послать сообщение mdichild-форме на восстановление.