On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
постоянный участник




Пост 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% увеличения.
А как получить число большого фонта (чтобы функция возвращала размер увеличения) ?


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 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 и т д


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6431
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.05.17 21:27. Заголовок: Andrey пишет: А у м..


Andrey пишет:

 цитата:
А у меня есть юзер который ставит 250% увеличения


А если появится который 10500 % поставит , тоже в форум напишешь ?

ЗЫ
Ему к врачу и пусть норм очки выдаст )))

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5391
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.05.17 11:55. Заголовок: Dima пишет: Ему к в..


Dima пишет:

 цитата:
Ему к врачу и пусть норм очки выдаст )))


Этот юзер - инвалид по зрению, не смотря на это работает за компом.
И вообще это право за юзером закреплено - как хочет пускай и увеличивает.

А у меня буковки на кнопках съедаются, наименование кнопок приходиться додумывать !
Вот и хочу знать размер увеличения ! Как эту функцию переделать ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост 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

Можете, пользуясь материалом по ссылке, написать свою, уточненную функцию расчета

Спасибо: 0 
ПрофильЦитата Ответить



Пост 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

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5392
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.05.17 18:04. Заголовок: Петр пишет: Хотя бы..


Петр пишет:

 цитата:
Хотя бы так
RETURN (nPixelX == 120) => RETURN nPixelX



Блин, так просто оказывается...
Спасибо БОЛЬШОЕ !

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 698
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет