purebasic.info

PureBasic forum
Текущее время: Вс ноя 19, 2017 4:16 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
СообщениеДобавлено: Вс сен 10, 2017 5:55 pm 
Не в сети
профессор

Зарегистрирован: Вс авг 31, 2014 12:11 am
Сообщений: 381
Благодарил (а): 47 раз.
Поблагодарили: 18 раз.
Пункты репутации: 10
Здравствуйте.
Необходимо программно узнать реальную диагональ монитора. Как это можно сделать?
Это:
Код:
1
2
; HORZSIZE – Ширина физического дисплея (в миллиметрах)
; VERTSIZE – Высота дисплея (в миллиметрах)


врёт!
Повторю здесь код получения числа пикселей на горизонтальный/вертикальный логический дюйм
Код:
1
2
3
4
5
6
7
8
9
10
monitor_DC.l= GetDC_(GetDesktopWindow_()) 
 
    If monitor_DC
      GLMonicDPIX.l = GetDeviceCaps_(monitor_DC,#LOGPIXELSX)
      GLMonicDPIY.l = GetDeviceCaps_(monitor_DC,#LOGPIXELSY)
     
    EndIf
    Debug GLMonicDPIX
    Debug GLMonicDPIY
 



Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вс сен 10, 2017 6:16 pm 
Не в сети
профессор

Зарегистрирован: Вс авг 31, 2014 12:11 am
Сообщений: 381
Благодарил (а): 47 раз.
Поблагодарили: 18 раз.
Пункты репутации: 10
может так:
Код:
1
Debug Sqr(Pow(1920.0, 2.0) + Pow(1280.0, 2.0)) / 120


?
120 - это dpi


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн сен 11, 2017 12:14 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вт апр 14, 2009 7:22 pm
Сообщений: 282
Благодарил (а): 1 раз.
Поблагодарили: 9 раз.
Пункты репутации: 0
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
ExamineDesktops()
DH = DesktopHeight(0)
DW = DesktopWidth(0)
OpenWindow(0, 0, 0, DW, DH, "", #PB_Window_BorderLess | #PB_Window_ScreenCentered )
wh = WindowHeight(0,#PB_Window_InnerCoordinate)
ww = WindowWidth(0,#PB_Window_InnerCoordinate)
CanvasGadget(0,0,0,ww,wh)
StartVectorDrawing(CanvasVectorOutput(0 , #PB_Unit_Millimeter))
vh = VectorOutputHeight()
vw = VectorOutputWidth()
AddPathBox(20, 20, vw-40, vh-40)
VectorSourceColor(RGBA(255, 0, 0, 255))
StrokePath(5)
StopVectorDrawing()
Debug vh-40
Debug vw-40
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
End


Берём рулетку и измеряем для контроля, у меня немного врёт, ибо телевизор на svga в качестве монитора


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вт сен 12, 2017 10:11 am 
Не в сети
профессор

Зарегистрирован: Вс авг 31, 2014 12:11 am
Сообщений: 381
Благодарил (а): 47 раз.
Поблагодарили: 18 раз.
Пункты репутации: 10
jobless, спасибо, но Ваш код также выдаёт неправильный результат.
Использую для работы ноутбук 15.6", но его экран отключаю так как используется внешний монитор, подключенный через hdmi.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вт сен 12, 2017 5:43 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вт апр 14, 2009 7:22 pm
Сообщений: 282
Благодарил (а): 1 раз.
Поблагодарили: 9 раз.
Пункты репутации: 0
knower писал(а):
jobless, спасибо, но Ваш код также выдаёт неправильный результат.
Использую для работы ноутбук 15.6", но его экран отключаю так как используется внешний монитор, подключенный через hdmi.


Так и я о том же... мне кажется точности стандартными средствами не добиться.
По пробую позже эти векторные функции на линуксе, принтере и pdf

Если ТОЛЬКО для WIN(мне не интересно), то читать внимательно всё вокруг GetDeviceCaps


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB