Как создать модальное окно с полупрозрачным фоном?
, VB6
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.26] |
|
|
Правила раздела Visual Basic: Общие вопросы
FAQ Сайта
FAQ Раздела
Кладовка
Наши Исходники
API-Guide
Поиск по Разделу
MSDN Library Online
Google| Страницы: (3) [1] 2 3 все ( Перейти к последнему сообщению ) |
Как создать модальное окно с полупрозрачным фоном?
, VB6
|
Сообщ.
#1
,
|
|
|
|
|
Сообщ.
#2
,
|
|
|
|
Цитата Как создать модальное окно с полупрозрачным фоном? (рис) А разве это не простой Draw цикл? Он просто берёт на себя управление и не пускает в основную программу, по крайней мере, это более вероятно, чем инициализировать окно, с прозрачностью, да ещё что бы цикл отрисовки остановить... |
|
Сообщ.
#3
,
|
|
|
|
Смотри SetLayeredWindowAttributes
|
|
Сообщ.
#4
,
|
|
|
|
смотрите UpdateLayeredWindow(), но рисовать его придется полностью самому
|
|
Сообщ.
#5
,
|
|
|
|
Цитата antonn @ смотрите UpdateLayeredWindow(), но рисовать его придется полностью самому Используя SetLayeredWindowAttributes ничего не придется рисовать самому. |
|
Сообщ.
#6
,
|
|
|
|
Можно через отдельное окно с полупрозрачностью (SetLayeredWindowAttributes). Можно отрисовать через граф. библиотеку (DirectDraw, OpenGL - насколько я знаю, так часто делают в играх). Есть еще Windows API на тему прозрачного и полупрозрачного рисования, только названия функций не помню.
|
|
Сообщ.
#7
,
|
|
|
|
Цитата DIS @ Есть еще Windows API на тему прозрачного и полупрозрачного рисования, только названия функций не помню. AlphaBlend/TransparentBlt. Только они здесь неуместны. Что б было как на скриншоте, придется рисовать PNG-маску фона и отрисовывать каждый отдельный контрол самостоятельно: Работа с PNG |
|
Сообщ.
#8
,
|
|
|
|
спасибо
|
|
Сообщ.
#9
,
|
|
|
|
B.V., необязательно PNG, можно и bmp, а можно и вручную рисовать как тут, без всяких картинок. Тем более окно наипростейшее.
|
|
Сообщ.
#10
,
|
|
|
|
Цитата TheTrik @ а можно и вручную рисовать как тут, без всяких картинок. Тем более окно наипростейшее Я же не зря написал Цитата B.V. @ Что б было как на скриншоте Там текстуры. Будешь процедурно генерировать? Что касается bmp, альфа-канал в RGBQUAD не определен. Зачем использовать то, что не является стандартом и требует специальных средств и API? |
|
Сообщ.
#11
,
|
|
|
|
TheTrik
используя SetLayeredWindowAttributes не получится сделать то, что у автора на картинке. Так как эта функция применяет одинаковую альфу ко всему окну. А автору нужно переменную полупрозрачность, чего можно достичь создавая bmp с альфаканалом и скармливая функции мой указанной. Для окна с кнопкой и надписью проблем вообще никаких не возникнет |
|
Сообщ.
#12
,
|
|
|
|
Цитата B.V. @ Что касается bmp, альфа-канал в RGBQUAD не определен. Зачем использовать то, что не является стандартом и требует специальных средств и API? AlphaBlend, UpdateLayeredWindow "кушает" именно такой 32-битный Premultiplied RGBA. Цитата B.V. @ Там текстуры. Будешь процедурно генерировать? В GDI, GDI+ есть текстурная кисть. Цитата antonn @ используя SetLayeredWindowAttributes не получится сделать то, что у автора на картинке. Изначально я не обратил внимание на непрозрачные места. Да, нужно пользоваться UpdateLayeredWindow. |
|
Сообщ.
#13
,
|
|
|
|
Цитата TheTrik @ AlphaBlend, UpdateLayeredWindow "кушает" именно такой 32-битный Premultiplied RGBA. В Windows Bitmap нет никакого alpha, rtfm: http://en.wikipedia.org/wiki/BMP_file_format Цитата TheTrik @ В GDI, GDI+ есть текстурная кисть. Во-первых, GDI затирает альфу нулем. Во-вторых, программная отрисовка может быть оправдана только в двух случаях: оптимизация ресурсоемкости и универсальность отрисовки (например, масштабирование). Если такие задачи стоят перед автором, то -- да. Иначе это получается лишняя работа |
|
Сообщ.
#14
,
|
|
|
|
Цитата B.V. @ В Windows Bitmap нет никакого alpha, rtfm: http://en.wikipedia.org/wiki/BMP_file_format Что мешает его хранить там? Это позволяет загружать его через LoadPicture без проблем, не привлекая GDI+ и сторонние библиотеки. http://www.cyberforum.ru/post5555870.html Цитата B.V. @ Во-первых, GDI затирает альфу нулем. Нет, и пример тому выше. Все зависит от растровой операции. И это я привел пример на твое высказывание Цитата B.V. @ Там текстуры. Будешь процедурно генерировать? Цитата B.V. @ Иначе это получается лишняя работа Много ли лишней работы, создать кисть и закрасить ей прямоугольник? |
|
Сообщ.
#15
,
|
|
|
|
B.V.
Цитата В Windows Bitmap нет никакого alpha конечно нет, уже лет 15 как нет, но используется TheTrik Цитата Нет, и пример тому выше. затирает, поэтому используется лишь еще один шаг с параллельным рисованием на маске для альфы, не смертельно |