Font 125% и как с этим бороться

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
mitr
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 06.02.2003 (Чт) 13:12

Font 125% и как с этим бороться

Сообщение mitr » 14.04.2003 (Пн) 14:08

Есть такая проблема. Програмулина работает на трех разрешениях экрана 800 1024 и 1280, ресайзинг всех элементов выполняется нормально, но вот беда, если пользователь плохо видит, он ставит себе увеличенный размер шрифта, есть такая фича в винде. После чего в программе с трудом можно разобрать, что по чем. Как с этим бороться, как оставить размер шрифта тем который был по умолчанию в программе?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 14.04.2003 (Пн) 16:29

Для начала испольщуй векторные шрифты. Стандартный шрифт на форме и контролах -- MS Sans Serif, измени его на (например) Tahoma.
Но это тебе не поможет :) Потому как фонты -- не единственное, что изменяет свои размеры. Автоматически еще масштабируются Label, TextBox, Frame; PictureBox (насколько я помню) не масштабируется, но то, что находится внутри него, масштабируется.
Как с этим бороться я не нашел, я просто не масштабирую шрифты :)
Lasciate ogni speranza, voi ch'entrate.

mitr
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 06.02.2003 (Чт) 13:12

Сообщение mitr » 14.04.2003 (Пн) 16:50

А что значит просто не масштабирую шрифты, если они виндой автоматически увеличиваются?

Спасибо за ответ

Firestorm
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 946
Зарегистрирован: 02.05.2002 (Чт) 14:36
Откуда: Russia

Сообщение Firestorm » 14.04.2003 (Пн) 16:54

не судьба значит!!! :twisted: :lol: :D

либо замутить чё-нить типа узнать, включен ли этот увеличитель шрифта и от этого изменить размер шрифтов на контроле... :roll:
...просто гламурный падонак...
_________________
reborn! v.2 :twisted:
_________________

mitr
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 06.02.2003 (Чт) 13:12

Сообщение mitr » 14.04.2003 (Пн) 17:18

Интересно, а что по этому поводу Модераторы думают?
Неужели не сталкивались :wink:

goro
Постоялец
Постоялец
 
Сообщения: 494
Зарегистрирован: 03.12.2002 (Вт) 11:45
Откуда: Украина, Запорожье

Сообщение goro » 14.04.2003 (Пн) 22:44

вот что я нашел в просторах интернета...
определяет какой у тебя шрифт стоит, а далее и сам можешь под него подстроится.
Код: Выделить всё
Option Explicit

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Copyright ©1996-2003 VBnet, Randy Birch, All Rights Reserved.
' Some pages may also contain other copyrights by the author.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Distribution: You can freely use this code in your own
'               applications, but you may not reproduce
'               or publish this code on any web site,
'               online service, or distribute as source
'               on any media without express permission.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Private Const LOGPIXELSX = 88
Private Const LOGPIXELSY = 90
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function GetDC Lib "user32" _
     (ByVal hwnd As Long) As Long
Private Declare Function GetDeviceCaps Lib "gdi32" _
     (ByVal hdc As Long, ByVal nIndex As Long) As Long
Private Declare Function ReleaseDC Lib "user32" _
     (ByVal hwnd As Long, ByVal hdc As Long) As Long
Private Sub Command1_Click()
   
   'call the wrapper function   
    If IsScreenFontSmall() Then
          Label1.Caption = "System is using Small fonts"
    Else: Label1.Caption = "System is using Large fonts"
       
    End If
End Sub
Private Function IsScreenFontSmall() As Boolean
    Dim hWndDesk As Long
    Dim hDCDesk As Long
    Dim logPix As Long
   
   'get the handle to the desktop window   
    hWndDesk = GetDesktopWindow()
   
   'get the handle desktop display context (hDC)   
    hDCDesk = GetDC(hWndDesk)
   
   'get the horizontal logical pixels   
    logPix = GetDeviceCaps(hDCDesk, LOGPIXELSX)
   
   'release the hDC   
    Call ReleaseDC(hWndDesk, hDCDesk)
   
   'if the return from GetDeviceCaps is 96, then 
   'the system is using small fonts.
    IsScreenFontSmall = logPix = 96
 
End Function
'--end block--'
ПРЕВЕД

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Сообщение Vi » 15.04.2003 (Вт) 9:33

Значение Screen.TwipsPerPixelX = 15 (шрифт мелкий) = 12 (шрифт крупный).

Т.е. 1440 / Screen.TwipsPerPixelX - это и есть DPI вашего монитора (96 - мелкий, 120 - крупный)
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 15.04.2003 (Вт) 9:52

Vi, признавайся, ты один из разработчиков VB! :)
Вот ЭТОГО я не знал, меня всегда интересовало, откуда растут ноги у твипов :)
Lasciate ogni speranza, voi ch'entrate.

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Сообщение Vi » 15.04.2003 (Вт) 10:21

Просто как-то попадалось под руку. Нет, я пишу в основном на С (но не в MS). Отсюда и информации побольше.

1 дюйм = 20 точек = 1440 твипов - логические единицы
||
DPI пикселов - физические единицы.

По-англицки: (1 inch = 20 points = 1440 twips == DPI pixels)

Почему-то именно такое расположение логических и физических единиц. DPI - это характеристика устройства, dot-per-inch или точек-на-дюйм. 300 dpi для принтера, например.

Ну а все миллиметры и сантиметры выражаются через дюймы. Есть перевод Form1.ScaleX или Form1.ScaleY разных единиц в друг друга.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот, Yandex-бот и гости: 57

    TopList