Необходимо в обычном окне нарисоваль картинку, а потом поверх этой картинки вывести надпись функцией DrawText, но так чтоб фон текста не стер нарисованное ранее изображение.
Я делал так:
1. Создовал контекст
memDC = CreateCompatibleDC(hdc);
2. Создовал BITMAP
memBM = CreateCompatibleBitmap ( hdc, maxX, maxY );
3. Выбирал нужные обьекты
SelectObject ( memDC, memBM );
SelectObject ( memDC, hFont );
4. Устанавливал прозрачный цвет фона
SetBkColor(memDC, TRANSPARENT);
5. Рисовал картинку
pImage->Draw(memDC, ......)
6. Рисовал текст
DrawText(memDC, ......)
7. Капировал результат на нужное окно
BitBlt(hdc, ........, memDC, .....)
Однако под надписью картинки не видно её затирает фон надписи.
Помогите!
Вывод текста DrawText
Модераторы: Duncon, Hawk, Romeo, Eugie
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Вариантов здесь несколько. Самый простой - использовать TextOut вместо DrawText так, как SetBkMode влияет на работу первой функции, но не влияет на работу второй.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Так в том-то и прикол, что если верить MSDN (и естли я правильно понял приведенный ниже текст), то влияет:Romeo писал(а):Вариантов здесь несколько. Самый простой - использовать TextOut вместо DrawText так, как SetBkMode влияет на работу первой функции, но не влияет на работу второй.
Код: Выделить всё
[b]DrawText[/b]
.......................
[b]Remarks[/b]
The [b]DrawText[/b] function uses the device context's selected font, text color,
and background color to draw the text........................
В п.4 ошибка, нужно вызывать SetBkMode(memDC, TRANSPARENT);
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Ты BkColor и BkMode путаешь." писал(а):Так в том-то и прикол, что если верить MSDN (и естли я правильно понял приведенный ниже текст), то влияет:
А вот Eugie оказался более внимательным. Я хотя писал о BkMode, но то, что челоек использует BkColor не заметил" писал(а):В п.4 ошибка, нужно вызывать SetBkMode(memDC, TRANSPARENT);

Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.