Форум » GUI » Большой фонт в программе - 110%... и 250% ? » Ответить

Большой фонт в программе - 110%... и 250% ?

Andrey: Всем привет ! Тут ко мне вопросы поступают: Особенно много проблем с разрешением экрана. У меня используется нестандартное разрешение с увеличенными шрифтами (Win 7). Персонализация-> Экран -> Удобство чтения с экрана -> Пользовательский На одном компе на 120%, на другом на 110% И сразу все поля и окошки начинают плыть, шрифт вылезает за пределы и т.д.. Пока не понял как побороть. Определение большого фонта - функция Григория есть ! [pre2]/////////////////////////////////////////////////////////////////////////////////////////// // Функция проверки установлен ли БОЛЬШОЙ фонт в настройках системы // Пример вызова: 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 [/pre2] А у меня есть юзер который ставит 250% увеличения. А как получить число большого фонта (чтобы функция возвращала размер увеличения) ?

Ответов - 6

Softlog86: Я получаю из реестра : LP:=hb_ValToStr(win_regGet( WIN_HKEY_CURRENT_USER, "Control Panel\Desktop", "LogPixels" )) LogPixels:=LP LP - число - указывающее учеличение ; не проценты ,а число Проверьте опытным путём зти значения для +100 +125 и т д

Dima: Andrey пишет: А у меня есть юзер который ставит 250% увеличения А если появится который 10500 % поставит , тоже в форум напишешь ? ЗЫ Ему к врачу и пусть норм очки выдаст )))

Andrey: Dima пишет: Ему к врачу и пусть норм очки выдаст ))) Этот юзер - инвалид по зрению, не смотря на это работает за компом. И вообще это право за юзером закреплено - как хочет пускай и увеличивает. А у меня буковки на кнопках съедаются, наименование кнопок приходиться додумывать ! Вот и хочу знать размер увеличения ! Как эту функцию переделать ?

Петр: Техника которую вы пытаетесь применить называется [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 Можете, пользуясь материалом по ссылке, написать свою, уточненную функцию расчета

Softlog86: 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

Andrey: Петр пишет: Хотя бы так RETURN (nPixelX == 120) => RETURN nPixelX Блин, так просто оказывается... Спасибо БОЛЬШОЕ !



полная версия страницы