Отрисовка текста на DC с прозрачным фоном (Vista)
От: NeyroN Россия  
Дата: 06.03.08 09:26
Оценка:
Приветствую, уважаемые!
Подскажите, кто знает.
В программе есть функция, которая выводит "транспарентный" текст поверх существующего изображения.
void MyClass::DrawTransparentText(AnsiString text,int x, int y, HDC hPaintDC)
{
RECT r;
r.left=x; r.right=x+200; r.top=y; r.bottom=y+15;
SetBkMode(hPaintDC,TRANSPARENT);
SetTextColor(hPaintDC, 0x000000FF);
DrawText(hPaintDC,text.c_str(),text.Length(),&r,DT_LEFT);
}
В Висте, если тема "Аэро" отключена, то все ОК. Тест рисуется поверх картинки как положено, без фона, а если "Аэро" включена, то текст отрисовывается с черным фоном. Пробовал после SetBkMode выставлять фон для DC на черный. Результат тот же... Если есть какие мысли, буду благодарен!
Re: Отрисовка текста на DC с прозрачным фоном (Vista)
От: squid  
Дата: 07.03.08 19:38
Оценка:
Здравствуйте, NeyroN, Вы писали:

NN>Приветствую, уважаемые!

NN>Подскажите, кто знает.
NN>В программе есть функция, которая выводит "транспарентный" текст поверх существующего изображения.
NN>void MyClass::DrawTransparentText(AnsiString text,int x, int y, HDC hPaintDC)
NN>{
NN> RECT r;
NN> r.left=x; r.right=x+200; r.top=y; r.bottom=y+15;
NN> SetBkMode(hPaintDC,TRANSPARENT);
NN> SetTextColor(hPaintDC, 0x000000FF);
NN> DrawText(hPaintDC,text.c_str(),text.Length(),&r,DT_LEFT);
NN>}
NN>В Висте, если тема "Аэро" отключена, то все ОК. Тест рисуется поверх картинки как положено, без фона, а если "Аэро" включена, то текст отрисовывается с черным фоном. Пробовал после SetBkMode выставлять фон для DC на черный. Результат тот же... Если есть какие мысли, буду благодарен!

а что если в GDI+ все отрисовывать? обычный GDI с полноценной прозрачностью не очень дружит...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Отрисовка текста на DC с прозрачным фоном (Vista)
От: McSeem2 США http://www.antigrain.com
Дата: 08.03.08 00:02
Оценка:
Здравствуйте, squid, Вы писали:

S>а что если в GDI+ все отрисовывать? обычный GDI с полноценной прозрачностью не очень дружит...


Есть подозрение, что речь не идет о какой-либо полу-прозрачности. Речь просто о том, чтобы нарисовать текст без фонового прямоугольника на существующем непрозрачном изображении.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re: Отрисовка текста на DC с прозрачным фоном (Vista)
От: goto Россия  
Дата: 08.03.08 03:25
Оценка:
А на других компах не проверяли? Грешить на баги драйвера/железа — это конечно не очень серьезно, но так, бывает...
Re[3]: Отрисовка текста на DC с прозрачным фоном (Vista)
От: squid  
Дата: 08.03.08 05:30
Оценка:
Здравствуйте, McSeem2, Вы писали:

MS>Здравствуйте, squid, Вы писали:


S>>а что если в GDI+ все отрисовывать? обычный GDI с полноценной прозрачностью не очень дружит...


MS>Есть подозрение, что речь не идет о какой-либо полу-прозрачности. Речь просто о том, чтобы нарисовать текст без фонового прямоугольника на существующем непрозрачном изображении.


основываясь на опыте с GDI я бы все равно на GDI+ перебежал
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.