Автор | Сообщение |
|
| постоянный участник
|
Пост N: 5390
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.05.17 18:49. Заголовок: Большой фонт в программе - 110%... и 250% ?
Всем привет ! Тут ко мне вопросы поступают: Особенно много проблем с разрешением экрана. У меня используется нестандартное разрешение с увеличенными шрифтами (Win 7). Персонализация-> Экран -> Удобство чтения с экрана -> Пользовательский На одном компе на 120%, на другом на 110% И сразу все поля и окошки начинают плыть, шрифт вылезает за пределы и т.д.. Пока не понял как побороть. Определение большого фонта - функция Григория есть ! /////////////////////////////////////////////////////////////////////////////////////////// // Функция проверки установлен ли БОЛЬШОЙ фонт в настройках системы // Пример вызова: nSizeFont := IIF(LargeFonts(),9,11) FUNCTION LargeFonts() LOCAL hDC, nPixelX hDC := CreateDC( "DISPLAY", "", "" ) nPixelX := GetDevCaps( hDC ) DeleteDC( hDc ) RETURN (nPixelX == 120) #pragma BEGINDUMP #include <windows.h> #include "hbapi.h" HB_FUNC( CREATEDC ) { hb_retnl( ( LONG ) CreateDC( hb_parc( 1 ), hb_parc( 2 ), hb_parc( 3 ), 0 ) ); } HB_FUNC( DELETEDC ) { hb_retl( DeleteDC( ( HDC ) hb_parnl( 1 ) ) ); } HB_FUNC ( GETDEVCAPS ) { INT ix; HDC hdc; hdc = ( HDC ) hb_parnl( 1 ); ix = GetDeviceCaps( hdc, LOGPIXELSX ); hb_retni( (UINT) ix ); } #pragma ENDDUMP А у меня есть юзер который ставит 250% увеличения. А как получить число большого фонта (чтобы функция возвращала размер увеличения) ?
|
|
|
Ответов - 6
[только новые]
|
|
|
| |
Пост N: 356
Зарегистрирован: 03.12.08
|
|
Отправлено: 16.05.17 21:11. Заголовок: Я получаю из реестра..
Я получаю из реестра : LP:=hb_ValToStr(win_regGet( WIN_HKEY_CURRENT_USER, "Control Panel\Desktop", "LogPixels" )) LogPixels:=LP LP - число - указывающее учеличение ; не проценты ,а число Проверьте опытным путём зти значения для +100 +125 и т д
|
|
|
|
| |
Пост N: 6431
Зарегистрирован: 17.05.05
|
|
Отправлено: 16.05.17 21:27. Заголовок: Andrey пишет: А у м..
Andrey пишет: цитата: | А у меня есть юзер который ставит 250% увеличения |
| А если появится который 10500 % поставит , тоже в форум напишешь ? ЗЫ Ему к врачу и пусть норм очки выдаст )))
|
|
|
|
| постоянный участник
|
Пост N: 5391
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.05.17 11:55. Заголовок: Dima пишет: Ему к в..
Dima пишет: цитата: | Ему к врачу и пусть норм очки выдаст ))) |
| Этот юзер - инвалид по зрению, не смотря на это работает за компом. И вообще это право за юзером закреплено - как хочет пускай и увеличивает. А у меня буковки на кнопках съедаются, наименование кнопок приходиться додумывать ! Вот и хочу знать размер увеличения ! Как эту функцию переделать ?
|
|
|
|
| постоянный участник
|
Пост N: 1470
Зарегистрирован: 09.10.06
|
|
Отправлено: 17.05.17 13:14. Заголовок: Техника которую вы п..
Техника которую вы пытаетесь применить называется [url=https://msdn.microsoft.com/en-us/library/windows/desktop/dn469266(v=vs.85).aspx]High DPI[/url] Ваш "размер увеличения" в понятиях MS - это Scaling Factor. По ссылке найдете и стандартные величины и формулу расчета. Andrey пишет: цитата: | Как эту функцию переделать ? |
| Хотя бы так RETURN ( nPixelX == 120) => RETURN nPixelX А потом подобрать Scaling Factor и необходимый коефициент исходя из стандартного ряда 96 DPI = 100% scaling 120 DPI = 125% scaling 144 DPI = 150% scaling 192 DPI = 200% scaling Можете, пользуясь материалом по ссылке, написать свою, уточненную функцию расчета
|
|
|
|
| |
Пост N: 357
Зарегистрирован: 03.12.08
|
|
Отправлено: 17.05.17 14:24. Заголовок: FONT_1 и FONT_2 -..
FONT_1 и FONT_2 - шрифты для кнопок DO CASE CASE LogPixels1 <97 // =100% DEFINE FONT Font_1 FONTNAME 'Times New Roman' SIZE 13 ITALIC DEFINE FONT Font_2 FONTNAME 'Arial' Size 11 Font_1_SIZE:=13 CASE LogPixels1 >97 .AND. LogPixels1 <121 // = 125% DEFINE FONT Font_1 FONTNAME 'Times New Roman' SIZE 10 ITALIC DEFINE FONT Font_2 FONTNAME 'Arial' SIZE 9 Font_1_SIZE:=10 CASE LogPixels1 >=144 // =150% DEFINE FONT Font_1 FONTNAME 'Times New Roman' SIZE 8 ITALIC DEFINE FONT Font_2 FONTNAME 'Arial' Size 7 Font_1_SIZE:=8 END CASE
|
|
|
|
| постоянный участник
|
Пост N: 5392
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.05.17 18:04. Заголовок: Петр пишет: Хотя бы..
Петр пишет: цитата: | Хотя бы так RETURN (nPixelX == 120) => RETURN nPixelX |
| Блин, так просто оказывается... Спасибо БОЛЬШОЕ !
|
|
|
|