-
Всем привет Вот такая проблема: есть 32 битный битмап на него надо нарисовать текст, шрифтом tahoma, размер шрифта 8, (естественно у этого шрифта альфа канала нет). Так как шрифт без альфа канала на битмапе альфа канал в том месте где рисуется текст становится равным нулю. Как этого избежать?
-
Brush:=bsClear ?
-
> Brush:=bsClear ?
речь об альфе. Вроде бы все gdi функции обрабатывают только первых три байта, альфа затирается, как на фоне, так и на "нефоне".
я делал промежуточный битмап, на который копировал альфу с исходного изображения, рисовал белым текст (нужно было при любой прозрачности альфы всегда непрозрачный текст, хотя это может и не нужно), рисовал textout() на исходном текст и восстанавливал альфу обратно. Гемор, но что поделаешь, привязывать себя к лишней библиотеке типа gdi+ совершенно не хочется...
-
наверное так и придётся... кстате gdi+ точно также рисует.В Висьте кстате этого глюка нет.
-
Нарисуй на другом битмапе, установи нужное значение альфа-канала, скопируй битмап с учетом прозрачности. Я б так и сделал
-
немного непонятно что вы имели виду, но также надо учитывать и то что текст может быть как с альфа каналом так и без него.
-
"текс" не может быть "с альфаканалом", он просто рисуется без альфы. Если нужен и "альф" для текста можно выпендриться :) сделать два буферных битмапа, на оба скопировать кусок исходного изображения (только на один "видимый спектр" - RGB, а на второй альфу (и забить ее вмнесто каналов rgb - будет картинка альфы в градациях серого)). далее на первом рисуешь текст как он должен быть видимым, а второй по тем же координатам этот же текст, но белым цветом - будет альфа текста. Потом "собираешь" оба этих битмапа в один 32 битный и все :)
-
Удалено модератором Примечание: Нефиг поднимать чужие ветки.
-
-
-
ну и чего я как дурак со своими ссылками, если вопрос был удален? :)
-
Удалено модератором
|