powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Сглаживание шрифта
8 сообщений из 8, страница 1 из 1
Сглаживание шрифта
    #35495799
Фотография BION
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто-нибудь в курсе, как VB контролам и вообще контролам задать ClearType TrueType шрифт, т.е. со сглаживанием?
...
Рейтинг: 0 / 0
Сглаживание шрифта
    #35496956
Фотография BION
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот если кому надо будет...
(Text AntiAliasing)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
Private Declare Function CreateFontIndirect Lib "gdi32" Alias "CreateFontIndirectA" (lpLogFont As LOGFONT) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long

Private Const LF_FACESIZE =  32 
Private Type LOGFONT
    lfHeight As Long
    lfWidth As Long
    lfEscapement As Long
    lfOrientation As Long
    lfWeight As Long
    lfItalic As Byte
    lfUnderline As Byte
    lfStrikeOut As Byte
    lfCharSet As Byte
    lfOutPrecision As Byte
    lfClipPrecision As Byte
    lfQuality As Byte
    lfPitchAndFamily As Byte
    lfFaceName(LF_FACESIZE) As Byte
End Type


Const DEFAULT_QUALITY =  0 
Const DRAFT_QUALITY =  1 
Const PROOF_QUALITY =  2 
Const NONANTIALIASED_QUALITY =  3 
Const ANTIALIASED_QUALITY =  4 


Private Sub Form_Load()
    Dim RotateMe As LOGFONT
    Dim rFont As Long
    Dim sFont As String
    
    Me.AutoRedraw = True
    
    sFont = "Arial Cyr"

    For i =  0  To Len(sFont) -  1 
        RotateMe.lfFaceName(i) = Asc(Mid(sFont, i +  1 ,  1 ))
    Next
    
    RotateMe.lfHeight =  72 
    RotateMe.lfQuality = ANTIALIASED_QUALITY
    
    rFont = CreateFontIndirect(RotateMe)
    Curent = SelectObject(Me.hdc, rFont)
    
    Me.CurrentX =  160 
    Me.CurrentY =  100 
    Me.Print "Привет Какашкин!"
End Sub
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Сглаживание шрифта
    #38804088
SantaClaus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BION,

Доброго всем дня.
Тема старая я все понимаю. Есть один вопрос с данным методом. Можно как нибудь данный метод применить к Надписи например "Label1". Я как не пробовал не получается.
Буду очень сильно благодарен.
...
Рейтинг: 0 / 0
Сглаживание шрифта
    #38804870
SantaClaus,

ClearType работает на надписях с TrueType шрифтами (по крайней мере), в чём проблема? Нужен именно стиль рендеринга, обеспечиваемый выставлением LOGFONT.lfFaceName в ANTIALIASED_QUALITY?
...
Рейтинг: 0 / 0
Сглаживание шрифта
    #38805699
SantaClaus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13-й кварталSantaClaus,

ClearType работает на надписях с TrueType шрифтами (по крайней мере), в чём проблема? Нужен именно стиль рендеринга, обеспечиваемый выставлением LOGFONT.lfFaceName в ANTIALIASED_QUALITY?

Нужен именно стиль рендеринга, обеспечиваемый выставлением LOGFONT.lfFaceName в ANTIALIASED_QUALITY?
...
Рейтинг: 0 / 0
Сглаживание шрифта
    #38806029
SantaClaus,

видится 4 варианта. В первых трёх вместо (или вместе с, в качестве шаблона) Label (метки) используется её замена:
1) на DC формы/PictureBox-а отрисовывается текст с помощью метода Print или GDI-ных функций TextOut, DrawText(-Ex). Это, собственно, тот вариант, что автор темы и использовал (почищенный текст прилагается);
2) отрисовка текста идёт в метафайл, Label-ы заменяются Image-ми;
3) Label-ы заменяются UserControl-ами, использующими один из первых двух вариантов.

Четвёртый вариант для мазохистов джедаев, идущих по пути саморазвития через боль, но наиболее близок к хотелкам (если сработает; не попробовав, не узнаешь). Label-ы не заменяются на что-либо другое, но им меняется шрифт через Set Label.Font = МойШрифт, где МойШрифт - экземпляр класса, поддерживающего интерфейс IFontDisp, и, до кучи, несколько других интерфейсов . Если охота разбираться, исходник на C .
...
Рейтинг: 0 / 0
Сглаживание шрифта
    #38806033
SantaClaus,
...
Рейтинг: 0 / 0
Сглаживание шрифта
    #38806048
SantaClaus,

да, в классе, конечно же, надо .lfFaceName = ANTIALIASED_QUALITY делать.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Сглаживание шрифта
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]