Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Сглаживание шрифта / 8 сообщений из 8, страница 1 из 1
19.08.2008, 20:15
    #35495799
BION
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сглаживание шрифта
Кто-нибудь в курсе, как VB контролам и вообще контролам задать ClearType TrueType шрифт, т.е. со сглаживанием?
...
Рейтинг: 0 / 0
20.08.2008, 13:58
    #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
Период между сообщениями больше года.
12.11.2014, 20:06
    #38804088
SantaClaus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сглаживание шрифта
BION,

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

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

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

Нужен именно стиль рендеринга, обеспечиваемый выставлением LOGFONT.lfFaceName в ANTIALIASED_QUALITY?
...
Рейтинг: 0 / 0
14.11.2014, 12:04
    #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
14.11.2014, 12:06
    #38806033
Сглаживание шрифта
SantaClaus,
...
Рейтинг: 0 / 0
14.11.2014, 12:09
    #38806048
Сглаживание шрифта
SantaClaus,

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


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