Страница 1 из 1

Вывод текста DrawText

Добавлено: 12 апр 2008, 19:06
AndrejK77
Необходимо в обычном окне нарисоваль картинку, а потом поверх этой картинки вывести надпись функцией 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, .....)

Однако под надписью картинки не видно её затирает фон надписи.
Помогите!

Re: Вывод текста DrawText

Добавлено: 15 апр 2008, 10:19
Romeo
Вариантов здесь несколько. Самый простой - использовать TextOut вместо DrawText так, как SetBkMode влияет на работу первой функции, но не влияет на работу второй.

Re: Вывод текста DrawText

Добавлено: 15 апр 2008, 11:18
BBB
Romeo писал(а):Вариантов здесь несколько. Самый простой - использовать TextOut вместо DrawText так, как SetBkMode влияет на работу первой функции, но не влияет на работу второй.
Так в том-то и прикол, что если верить MSDN (и естли я правильно понял приведенный ниже текст), то влияет:

Код: Выделить всё

[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........................

Re: Вывод текста DrawText

Добавлено: 15 апр 2008, 12:35
Eugie
В п.4 ошибка, нужно вызывать SetBkMode(memDC, TRANSPARENT);

Re: Вывод текста DrawText

Добавлено: 18 апр 2008, 13:59
Romeo
&quot писал(а):Так в том-то и прикол, что если верить MSDN (и естли я правильно понял приведенный ниже текст), то влияет:
Ты BkColor и BkMode путаешь.
&quot писал(а):В п.4 ошибка, нужно вызывать SetBkMode(memDC, TRANSPARENT);
А вот Eugie оказался более внимательным. Я хотя писал о BkMode, но то, что челоек использует BkColor не заметил :) . Так что используй, AndrejK77, BkMode и TextOut.