Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562

Шрифтовая мистика

14.06.2013, 10:05. Показов 710. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сделал свой шрифт, microsoft word его понимает, выводит те символы, какие я хочу, а
C++
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
//=====================================================================================================================================================================================================
void                          DrawLoopChar                          (HDC                   &Context       ,
                                                                     int                    Left          ,
                                                                     int                    Red           ,
                                                                     int                    Top           ,
                                                                     int                    Right         ,
                                                                     int                   &EndX1         ,
                                                                     int                   &EndX2         ,
                                                                     int                   &EndY1         ,
                                                                     int                   &EndY2         ,
                                                                     double                 Size          ,
                                                                     double                 Scale         )
{
        int     WordRight;
        int     x;
        int     y;
 static char    Kind    =0x24;
 static wchar_t Space   =L' ';
        HFONT   Font;
        HFONT   BaseFont;
        HFONT   BaseFont1;
        SIZE    WordSize;
        SIZE    SpaseSize;
 Font     =EasyFontCreate(Context, L"mmz"  , Size*Scale, 0.5, IDFANormal);
 BaseFont =EasyFontCreate(Context, L"mmz"  , Size      , 0.5, IDFANormal);
 BaseFont1=EasyFontCreate(Context, L"Arial", Size      , 0.5, IDFANormal);
 x=Red;
 y=Top;
 SelectObject(Context, BaseFont1);
 GetTextExtentPoint32W(Context, &Space, 1, &SpaseSize);
 SelectObject(Context, BaseFont);
 GetTextExtentPoint32A(Context, &Kind, 1, &WordSize);
 SelectObject(Context, Font);
 WordRight=x+WordSize.cx;
 if (WordRight>=Right)
 {
  x=Left;
  WordRight=x+WordSize.cx;
  y-=((double)SpaseSize.cy)*1.5;
 }
 SelectObject(Context, Font);
 TextOutA(Context, ((double)x)*Scale, ((double)y)*Scale, &Kind, 1);
 EndX1=WordRight;
 EndX2=WordRight+SpaseSize.cx;
 EndY1=y;
 EndY2=((double)EndY1)-((double)SpaseSize.cy)*1.5;
 DeleteObject(Font);
 DeleteObject(BaseFont);
 DeleteObject(BaseFont1);
}
//=====================================================================================================================================================================================================
выводит символ $ вместо Название: Символ цикла.png
Просмотров: 76

Размер: 646 байт.
C++
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
//=====================================================================================================================================================================================================
HFONT                         EasyFontCreate                        (HDC                    Context       ,
                                                                     std::wstring           FontName      ,
                                                                     double                 Height        ,
                                                                     double                 Width         ,
                                                                     int                    Attributes    )
{
 double     HorizontalResolution;
 double     VerticalResolution;
 HFONT      Result;
 LOGFONT    LogicalFont;
 POINT      Point;
 TEXTMETRIC TextMetrics;
 SaveDC(Context);
 SetGraphicsMode(Context, GM_ADVANCED);
 ModifyWorldTransform(Context, NULL, MWT_IDENTITY);
 SetViewportOrgEx(Context, 0, 0, NULL);
 SetWindowOrgEx  (Context, 0, 0, NULL);
 HorizontalResolution=(double)(25.4*((double)GetDeviceCaps(Context, HORZRES))/((double)GetDeviceCaps(Context, HORZSIZE)));
 VerticalResolution  =(double)(25.4*((double)GetDeviceCaps(Context, VERTRES))/((double)GetDeviceCaps(Context, VERTSIZE)));
 Point.x=(int)(Width*Height*HorizontalResolution*10/72.0);
 Point.y=(int)(      Height*VerticalResolution  *10/72.0);
 DPtoLP(Context, &Point, 1);
 LogicalFont.lfHeight        =-(int)(((double)abs(Point.y))/10+0.5);
 LogicalFont.lfWidth         = (int)(((double)abs(Point.x))/10+0.5);
 LogicalFont.lfEscapement    = 0;
 LogicalFont.lfOrientation   = 0;
 LogicalFont.lfWeight        =(Attributes&IDFABold        )*700;
 LogicalFont.lfItalic        =(Attributes&IDFAItalic   >>1);
 LogicalFont.lfUnderline     =(Attributes&IDFAItalic   >>2);
 LogicalFont.lfStrikeOut     =(Attributes&IDFAStrikeOut>>3);
 LogicalFont.lfCharSet       = 0;
 LogicalFont.lfOutPrecision  = 0;
 LogicalFont.lfClipPrecision = 0;
 LogicalFont.lfPitchAndFamily= 0;
 CopyChars(FontName, LogicalFont.lfFaceName);
 Result=CreateFontIndirect(&LogicalFont);
 RestoreDC(Context, -1);
 return Result;
}
//=====================================================================================================================================================================================================
. Шрифты: Times New Roman, Arial, Symbol выбираются правильно.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.06.2013, 10:05
Ответы с готовыми решениями:

Мистика?
Здравствуйте. Помогите разобраться со сложившейся ситуацией: в AVR Studyo отлаживаю прогу на меге 8535 и наблюдается такая картина ...

Мистика
Добрый вечер!Мучаюсь с часу сегодняшнего дня и ничего не понимаю как так произошло и тому подобное.В крации: Переставил ПК, все...

Мистика)
Привет всем.Такая проблема: У меня есть форма,допустим Form1 Когда ее вызывать кодом,то появляется форма,и тупо виснет вся прога,если...

2
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
14.06.2013, 12:11  [ТС]
Вот шрифт: Вложение 282114. Нужен символ 0x0024 из него.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
17.06.2013, 07:22  [ТС]
Проблема решена, крылась в опциях проекта шрифта.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.06.2013, 07:22
Помогаю со студенческими работами здесь

Мистика
Мистика

Мистика с ip
Народ может кто сталкивался. Работаю у местного провайдера. Фишка в чем клиент получает IP совершенно с другого дома но с одной подсети....

Мистика с БП
Приветствую! Случилась проблема - вдруг перестал включаться комп. Первая мысль - пришел капец БП. Снял БП (hipster 500w) подрубил к другой...

Мистика
Здравствуйте! Такая непонятная штука у меня получается...есть сайт http://itcdoosb.bget.ru/index.php/profil/profile в личном кабинете...

Мистика
Небольшая, простая офисная сеть. "Главный" компьютер, самый мощный - шлюз с WinXP, на котором стоит UserGate версии 2.8. На этом сервере...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru