![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Здравствуйте!
Нужно вывести на TPNGObject произвольный текст, и, естественно, с прозрачным фоном. Если выводить через "TPNGObject.Canvas.TextOut(**)", то текст рисуется на непрозрачной границе изображения, да и ещё с серым фоном. Прошу помощи. Заранее, спасибо! |
#2
|
||||
|
||||
![]() TPNGObject.Canvas.Brush.Style := bsClear
Должно помочь. Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#3
|
|||
|
|||
![]() angvelem, это не то.
Нужно как-бы применить альфа-канал к шрифту (Arial, 12). Т.е., к примеру, у нас нарисована окружность на TPNGObject с альфа-каналом, то, что в окр. будет видно, а вне - не видно. ЗЫ: С серым фоном разобрался через SetBkMode. Последний раз редактировалось Radical, 18.04.2012 в 19:23. |
#4
|
||||
|
||||
![]() Не уверен, но стандартными способами это невозможно. Кажись. Где текста не видно, значение Alpha пикселей равно 0 (абсолютно прозрачный?), соответственно, цвет невидимый. Можно, конечно, разработать свои, "свихнутые" методы (не напрямую выводить текст в Canvas, а в буфферную картинку, потом через ScanLines в обьект например), но они помедленее будут. Наверное.
|
#5
|
|||
|
|||
![]() Абсолютно верно - "Где текста не видно, значение Alpha пикселей равно 0".
Может как-нибудь через TBitmap попробовать? Любые методы приму ![]() |
#6
|
|||
|
|||
![]() YVitaliy, да, и вправду работает!
Но, вот одна загвоздка, из-за которой, как раз, я сюда и обратился - в твоей функции шрифт "MS Sans Serif", который выводится, как бы без антилайзинга (не знаю как ещё назвать), т.е. только красные пиксели, т.е. шрифт получается не красивый. А мне нужно использовать шрифт Arial. Но всё-равно, спасибо тебе за помощь! ![]() |
#7
|
||||
|
||||
![]() Если нужно сглаживание можешь при рисовании "пропускать" цвет фона, тогда остальные цвета будут рисоваться:
Код:
if ((pcl<>bkColor) and (bkTransparent)) or (not bkTransparent) then begin ... |
#8
|
||||
|
||||
![]() Цитата:
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#9
|
|||
|
|||
![]() Ладно, скажу проще:
Допустим: имеем TPNGObject, он полностью прозрачен. Задача: вывести текст с поддержкой прозрачности. К примеру мы открыли Paint.NET/Photoshop очистили всё изображение, написали на нём текст и сохранили в PNG. |
#10
|
||||
|
||||
![]() Ну сам же сказал, что функцией SetBkMode воспользовался. Она и выставляет прозрачно или нет.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |