Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.07.2015, 10:58   #1
Bruce Wayne
Пользователь
 
Регистрация: 08.07.2015
Сообщений: 21
Вопрос Alphablend: Полупрозрачный BMP-рисунок

Доброе время суток!

Подскажите, пожалуйста, как реализовать полупрозрачность BMP на форме, чтобы он просвечивал рабочий стол как здесь, на рис. 4? (http://comprice.ru/articles/detail.php?ID=42566) В статье сказано: "...произведя очевидную модификацию данного кода...". А что это за модификация?
Bruce Wayne вне форума Ответить с цитированием
Старый 28.07.2015, 11:40   #2
ResourceSpace
Форумчанин
 
Аватар для ResourceSpace
 
Регистрация: 30.06.2015
Сообщений: 353
По умолчанию

Вы кажется не так назвали тему... Может вам нужно полупрозрачное окно?
Раздел "C++ Builder", гм... Точно не припомню есть ли в нём такое?:
Код:
Form1->AlphaBlend=true;
Form1->AlphaBlendValue=127;
Это не то что вы хотели? Опишите подробнее как вы хотите видеть результат.
ResourceSpace вне форума Ответить с цитированием
Старый 28.07.2015, 11:46   #3
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

2 ResourceSpace
ТС имеет в виду - наложить полупрозрачное изображение на форму.
Знающий не говорит, говорящий не знает (С) Лао Цзы

Последний раз редактировалось Krok27; 28.07.2015 в 11:56.
Krok27 вне форума Ответить с цитированием
Старый 28.07.2015, 11:59   #4
ResourceSpace
Форумчанин
 
Аватар для ResourceSpace
 
Регистрация: 30.06.2015
Сообщений: 353
По умолчанию

Разумеется ходил. Сужу по фразе:
Цитата:
чтобы он просвечивал рабочий стол как здесь
И вот этой картинке из ссылки: http://comprice.ru/articles_img/debug/2003-21/3.jpg
Это полупрозрачное окно над рабочим столом, делающееся как я показал (если в используемой версии Билдера есть такие свойства).
ResourceSpace вне форума Ответить с цитированием
Старый 28.07.2015, 12:10   #5
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Принимается.
Цитата:
(если в используемой версии Билдера есть такие свойства)
В статье:
Цитата:
В качестве среды программирования будет использоваться Borland C++ Builder v5.0.
Предположу, что он не использует что-то старше.
Но ТС, судя по его активности, уже не интересны наши потуги...
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Старый 28.07.2015, 12:35   #6
Bruce Wayne
Пользователь
 
Регистрация: 08.07.2015
Сообщений: 21
По умолчанию

ResourceSpace, мне нужно вывести изображение на форму (TImage), а затем изменить только его прозрачность, чтобы только оно просвечивало рабочий стол, а поверх него выводить уже другие изображения. Наложение двух изображений друг на друга я сделал по этой статье, а вот полупрозрачность с просвечиванием рабочего стола пока никак не получается...

Krok27, я использую RAD Studio XE2, но подойдёт решение и под предыдущие версии, хотя желательно под XE2.
Bruce Wayne вне форума Ответить с цитированием
Старый 28.07.2015, 14:50   #7
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Полупрозрачная область на форме должна быть только под TImage?
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Старый 28.07.2015, 16:41   #8
Bruce Wayne
Пользователь
 
Регистрация: 08.07.2015
Сообщений: 21
По умолчанию

Вот, взгляните на картинку - набросал, что примерно хотелось бы получить. Лес - рабочий стол (включая значки и окна), оранжевая часть - Image1 (условно), голубая - Image2. Скошенные края можно сделать с помощью свойства TransparentColor, а так, да, только под TImage.
Изображения
Тип файла: jpg 1.jpg (116.1 Кб, 140 просмотров)

Последний раз редактировалось Bruce Wayne; 28.07.2015 в 16:45.
Bruce Wayne вне форума Ответить с цитированием
Старый 28.07.2015, 19:09   #9
ResourceSpace
Форумчанин
 
Аватар для ResourceSpace
 
Регистрация: 30.06.2015
Сообщений: 353
По умолчанию

ага... Хороший картинка, все бы так набрасывали

Цитата:
полупрозрачность с просвечиванием рабочего стола пока никак не получается...
Увы, это не настолько просто как вы подумали.

Вот если бы оранжевое и голубое были одинакового, назовём так, уровня прозрачности...
Тогда подошло бы установить окну свойство, а так...

Варианта два:
1) Делать несколько окон с разными уровнями прозрачности друг над другом. И добиваться от них синхронного перемещения (если требуется).
2) Делать полноценное Layered-окно. То есть создаём BMP с альфа-каналом, отправляем его на отрисовку вместо окна. Но тогда отрисовка идёт полностью руками.

Последний раз редактировалось ResourceSpace; 28.07.2015 в 19:29.
ResourceSpace вне форума Ответить с цитированием
Старый 28.07.2015, 19:37   #10
Bruce Wayne
Пользователь
 
Регистрация: 08.07.2015
Сообщений: 21
По умолчанию

Я и не думал, что это просто - уже несколько лет то возьмусь искать способы, то заброшу опять

Первый вариант не подходит из-за того, что для синей картинки придётся использовать TransparentColor, и получится, что сглаженные края (т. е. с использованием полупрозрачных пикселей) сольются с этим самым цветом и не будут невидимыми или полупрозрачными. Результат - грубые квадратные края изображения нестандартной формы, да ещё и с примесью цвета фона. Бррр...

А как можно вторым вариантом это реализовать? Ведь потребуется GDI+, верно? Если да, то этот вариант, вероятно, тоже не подойдёт из-за того, что прозрачное окно не будет воспринимать мышь. Даже если это можно устранить, то мне хотелось бы использовать саму форму, а не вновь созданное окно.

Есть ли другие способы? Сейчас же появилась поддержка PNG-файлов с тех пор. Может, с ними можно как-то реализовать? По идее, всё, что нужно - так это избавиться от фона формы, чтобы прозрачные пиксели PNG не смешивались с ним, т. е. добавить в него альфа-канал. Ведь в статье, вроде бы, используется функция AlphaBlend() - только и всего... Вот и доверяй после этого людям

Последний раз редактировалось Bruce Wayne; 28.07.2015 в 19:46.
Bruce Wayne вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AlphaBlend: наложить bmp на jpg или наоборот fredwriter Помощь студентам 2 17.09.2012 19:28
Полупрозрачный DIV X@OC HTML и CSS 3 18.04.2011 08:54
полупрозрачный слой voldemen HTML и CSS 1 14.09.2010 22:14
Добавить точечному рисунку альфа канал, что бы рисунок воспринимался функцией AlphaBlend Son Мультимедиа в Delphi 3 11.02.2010 16:46
Как наложить полупрозрачный рисунок поверх видео. jocry Мультимедиа в Delphi 3 03.11.2009 09:22