| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Прозрачный TPanel |
| Автор: mr.Anderson 17.4.2007, 17:56 |
| Подождите гнать меня в поиск! Я там был... Нашел, как делать форму прозрачной (а как просто-то, оказывается). Нашел, как вытворять всевозможные эффекты с TImage. А как можно сделать TImage полупрозрачным? Эффекты через AlphaFX делать можно, но как полупрозрачным его сделать? |
| Автор: Klin 17.4.2007, 17:59 |
Не понял, так тебе TPanel или TImage полупрлзрачный надо? |
| Автор: mr.Anderson 17.4.2007, 18:06 |
| Да в принципе какая разница. Смысл: на панели лежит имейдж и на нем написан текст (через TLabel). Нужно, чтобы TLabel остался нормальной контрастности, а вот TImage стал бледнее. Естественно, нужно, чтобы уровень прозрачности можно было регулировать. |
| Автор: Klin 17.4.2007, 18:08 |
Здрасти, у Image есть transparent у Panel нет. А в принципе, проблема или через Canvas решается или рисунок можно использовать GIF и там уровень прозрачности сделать. |
| Автор: SenkraD 17.4.2007, 18:09 | ||
Если TPanel, то возможно так (мож надо ещё форме прозрачность разрешить)
|
| Автор: Klin 17.4.2007, 18:12 |
| Нет, ему не весь же надо исправить. Можно так сделать. У рисунка есть цвет прозрачности, этим цветом через Canvas сделать на нем "решетку" из мелких точек и получиться эфект прозрачности, хотя если способ SenkraD, и на рисунок использовать можно, то лучше сделать как предлагает он. |
| Автор: mr.Anderson 17.4.2007, 18:14 |
| Klin, Transparent - это не совсем то. Транспарент поможет только обрезать границы у BMP-картинки (кстати, он плоховато это делает). А мне нужно весь рисунок сделать полупрозрачным, а не только границы обрезать. SenkraD, попробую, спасибо, но и впрямь похоже надо TImage сделать прозрачным, а не панель... Чего-то я ступил. |
| Автор: Klin 17.4.2007, 18:15 |
| только этот способ под 98 работать не будет :( |
| Автор: mr.Anderson 17.4.2007, 18:16 |
| Да и фиг с ним в принципе. |
| Автор: Klin 17.4.2007, 18:18 |
На Jpeg вообще-то тоже работает. Но я говорил сделать в редакторе GIF и ему прозрачность назначить и тогда Transparent будет не края резать, а прозрачность изменять (сам проверял) |
| Автор: mr.Anderson 17.4.2007, 18:20 |
| Стоп-стоп... Как это сделать для TImage, если у него нет хендла? Добавлено через 43 секунды Klin, можно с этого места поподробнее? Что значит "сделать в редакторе GIF и ему прозрачность назначить" |
| Автор: Klin 17.4.2007, 18:21 |
| гы-гы у Image Handle нет Добавлено через 40 секунд блин опередил, щас напишу |
| Автор: mr.Anderson 17.4.2007, 18:21 |
| Klin, а я о чем? Добавлено через 36 секунд |
| Автор: Klin 17.4.2007, 18:24 |
| Точно по действия не помню, но примерно так: 1) Создаешь нужный рисунок 2) Накладываешь на него к примеру фиолетовый 3) Изменяешь прозрачность фиолетового на глаз 4) Сохраняешь его как GIF с прозрачным фиолетовым Вроде все, но там в свойствах его (при сохранении) должно быть что-то типа "Indefie ?". p.s. Я думаю, что с хэндлом че-нибудь придумать можно.... |
| Автор: mr.Anderson 17.4.2007, 18:26 |
| И лучше именно это что-нить придумать, т.к. с рисунком я так и не понял толком, чего делать. Добавлено через 5 минут и 53 секунды Кстати,метод не сработал даже с панелью (WinXP). |
| Автор: mr.Anderson 17.4.2007, 21:20 |
| Вопрос актуален. |
| Автор: Klin 18.4.2007, 21:33 | ||
Пытался попробовать со способом SenkraD`а, но пока изменить могу только окно. Кстати у Image (почти у него) хэндл есть:
Почти получилось с другим вариантом, но он делает его полностью прозрачным |
| Автор: Alexeis 6.9.2007, 00:09 | ||
И не удивительно, если внимательно читать справку, то слои можно устанавливать только парент окну, но не чайлду. Что-то подобное можно сделать, если использовать 2 формы. 1я дырявая (видны только компоненты) у нее своя прозрачность, а вторая пустая форма с другой прозрачностью расположена ниже этой дырявой формы. В разделе по делфи мы уже испробовали этот вариант. Работает довольно стабильно, правда на слабых машинах такое окошко хорошо притормаживает при перемещении. Но это все равно только 2 прозрачности. Чтобы установить каждому нужно каждый контрол поместить на свою форму |
| Автор: SparF 6.9.2007, 00:36 | ||
Изврат однако)))))))))))))) тогда поставлю вопрос по другому (надеюсь за оффтоп не примут) Как еще можно несложно добиться эффекта появления движущейся кнопки из-за невидимой черты (кнопки двигаются в пределах невидимого/прозрачного прямоугольника на форме, что-то вроде бегущей строки из кнопок) PS заранее спасибо. |
| Автор: Alexeis 6.9.2007, 00:42 |
| Выползать из под панели и заползать под другую панель. Панели не имеет бордюра. Добавлено через 1 минуту и 31 секунду Для этого нужно всего лишь установить им правильный z order. |
| Автор: SparF 6.9.2007, 01:00 | ||
Да, пожалуй, это единственный вариант. Alexeis, спасибо))))) Добавлено через 1 минуту и 36 секунд ....правда в этом случае не будет видна фоновая картинка формы.... =( Добавлено через 7 минут и 33 секунды ....мда...по-человечески походу никак, придется дробить картинку на несколько частей, и части по бокам формы делать выше кнопок... |
| Автор: Alexeis 6.9.2007, 09:12 |
| Тогда можно вообще отказаться от панелей и переопределить перерисовку движущейся кнопки. В нужный момент (по OnPaint) просто рисовать фрагмент фоновой картинки на кнопке. |