![]() |
|
|
![]()
|
|
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 12 |
нужно получить битовую маску нужных мне символов выбранного мной шрифта.
Пока что думаю сделать следующим образом: 1. Нарисовать нужный мне символ в прямоугольнике определенного размера (мне надо 8х16). 2. Oбработать посимвольно каждый пиксел функцией GetPixel(), проставляя соответственно в битовой маске нули и единицы.. так поступить с каждым символом. Но может быть, есть какие-то стандартные методы? -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Да уж, GetPixel у DC спрашивать - не самый лучший путь (медленно - жуть!).
Вариант 1. Прорисовать как ты сказал, но в memory context + свой Bitmap, а потом сразу попросить все биты (GetBitmapBits). Вариант 2 ( для продвинутых). См. GetGlyphOutline:
Т.е. прямо можно получить битмап для символа. -------------------- ... |
|||
|
||||
| Dreamer_0x01 |
|
||||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 12 |
Это пофигу, операция выполняется только один раз для каждого символа кодовой таблицы при запуске программы, и все.
А что отом с этим битмапом делать? Как его "расшифровать"? Мне собственно что нужно... Допустим, есть символ, вписанный в прямоугольник 8х8; нужно заполнить массив типа unsigned short Ar[8]={ 0x00FF,//вся строка черная 0x00FF,//вся строка черная 0x00FF,//вся строка черная 0x00C3,//в центре 4 пробела 0x00C3,//в центре 4 пробела 0x00FF,//вся строка черная 0x00FF,//вся строка черная 0x00FF,//вся строка черная } где элементы массива означают строки в битовой маске, а биты в элементах - точки в строках (В данном примере это будет небольшое пятно в центре битовой маски). -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
||||
|
|||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Битмап (черно-белый) и есть битовая маска, которая тебе нужна. Учти только, что строки в битмапе должны быть выровнены на WORD.
Размер выровненной строки вычисляется так:
Соответственно, размер буфера под биты = размер строки * высота. -------------------- ... |
|||
|
||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 12 |
Я понимаю, что битовая маска, но она будет "чистая", или как и файл bmp, содержать в каких-то первых строках служебную информацию?
-------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Биты, которые ты получаешь с помощью GetBitmapBits - это ровно содержание, т.е. нужная тебе маска, нет там никакого заголовка.
-------------------- ... |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |