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

Вниз

О свойстве TScreen.PixelsPerInch   Найти похожие ветки 

 
kudatsky   (2007-10-15 13:57) [0]

Как я понимаю, это количество пикселей на дюйм.
Но при разных разрешениях оно возвращает 96.
В чём дело ?


 
Ega23 ©   (2007-10-15 14:05) [1]


constructor TScreen.Create(AOwner: TComponent);
var
 DC: HDC;
begin
 inherited Create(AOwner);
 Classes.AddDataModule := AddDataModule;
 Classes.RemoveDataModule := RemoveDataModule;
 CreateCursors;
 FDefaultKbLayout := GetKeyboardLayout(0);
 FForms := TList.Create;
 FCustomForms := TList.Create;
 FDataModules := TList.Create;
 FMonitors := TList.Create;
 FSaveFocusedList := TList.Create;
 DC := GetDC(0);
 FPixelsPerInch := GetDeviceCaps(DC, LOGPIXELSY);
 ReleaseDC(0, DC);
 EnumDisplayMonitors(0, nil, @EnumMonitorsProc, LongInt(FMonitors));
 FIconFont := TFont.Create;
 FMenuFont := TFont.Create;
 FHintFont := TFont.Create;
 GetMetricSettings;
 FIconFont.OnChange := IconFontChanged;
 FMenuFont.OnChange := IconFontChanged;
 FHintFont.OnChange := IconFontChanged;
end;


 
Anatoly Podgoretsky ©   (2007-10-15 14:11) [2]


> Но при разных разрешениях оно возвращает 96.

Именно, поскольку количество точек на дюйм не менялось, смени шрифт в системе с нормального на крупный и получишь изменение.


 
Ins ©   (2007-10-15 14:35) [3]


> kudatsky   (15.10.07 13:57)

Видимо потому, что возвращается значение, соответствующее числу точек на логический дюйм, а логический дюйм на экране не всегда равен физическому дюйму. Поищи определение логического дюйма. Вроде бы это та длина, котороя будет соответствовать одному дюйму при печати.


 
Ins ©   (2007-10-15 14:48) [4]

Так и есть. В общем, поищите книгу Феня Юаня "Программирование графики в Windoows" (тут недавно даже ссылку на нее давали), там на страницах 349-350 объясняется причина сего.


 
Ins ©   (2007-10-15 14:52) [5]


> kudatsky   (15.10.07 13:57)

Ну а если нужно точно значение точек на физический дюйм, то см. флаги HORZSIZE Width, in millimeters, of the physical screen.
VERTSIZE Height, in millimeters, of the physical screen.
HORZRES Width, in pixels, of the screen.
VERTRES Height, in raster lines, of the screen.
функции GetDeviceCaps. Просто сначала получите ширину физического экрана в пикселах, потом - в миллиметрах, потом путем хитрых математических манипуляций рассчитайте реальное dpi.


 
DVM ©   (2007-10-15 16:34) [6]


> Ins ©   (15.10.07 14:48) [4]

постранично знаешь наизусть всю книгу? :)


 
Ins ©   (2007-10-15 16:35) [7]


> постранично знаешь наизусть всю книгу? :)

Да нет, она у меня в электронном варианте под рукой :)



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

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

Наверх




Память: 0.48 MB
Время: 0.012 c
6-1172929528
tytus
2007-03-03 16:45
2007.11.11
TWebBrowser - долгая загрузка страницы.


15-1191495261
Василий
2007-10-04 14:54
2007.11.11
PNG Delphi (Gustavo Daud) Как снимать ImageOver?


2-1192520464
de.
2007-10-16 11:41
2007.11.11
DBGridEh


15-1190738277
Fleg
2007-09-25 20:37
2007.11.11
WinAPI


2-1192805649
dreamse
2007-10-19 18:54
2007.11.11
Подскажите как скопировать в переменную последнии несколько