Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Прозрачность отдельных элементов окна 
:(
    Опции темы
webgraf
Дата 26.10.2007, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 5.6.2007

Репутация: нет
Всего: нет



Нужно реализовать следующий эффект:
В абсолютно прозрачном окне будет выводится список TextOut-ов (штук 10-20). 
При этом периодически отдельные TextOut-ы должны иногда плавно исчезать/появлятся(используя прозрачность). Посему прошу совета - как это реализовать? На ум приходит две идеи:
1. Сделать основное окно абсолютно прозрачным(LWA_COLORKEY например). А на него кидать AlphaBlend-ом TextOut-ы. Совершенно не представляю - будет ли это работать
2. Для каждого TextOut-а сделать свое, модальное например, окно и просто регулировать прозрачность(LWA_ALPHA) каждого.

Последний вариант удобен тем что легко будет отлавливать click-и на TextOut(а это надо будет делать..), но как эффективно это будет работать - пока не представляю, да и как сделать одновременно LWA_ALPHA и LWA_COLORKEY тоже понятия не имею(окошки должны быть без фона и прозрачные ведь..).

В общем если у кого есть задумка, ткните в нужно направлении. Спасибо ;)


PM MAIL   Вверх
Andrey44
Дата 26.10.2007, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 8
Всего: 26



Layered посмотри.


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
webgraf
Дата 26.10.2007, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 5.6.2007

Репутация: нет
Всего: нет



Цитата(Andrey44 @ 26.10.2007,  15:32)
Layered посмотри.

А что там? Обычное полупрозрачное окно. LWA_ALPHA. Как мне это поможет?
PM MAIL   Вверх
Andrey44
Дата 26.10.2007, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 8
Всего: 26



Код

VOID Example_DrawString3(HDC hdc)
{
   Graphics graphics(hdc);

   // Create a string.
   WCHAR string[] = L"Sample Text";
   
   // Initialize arguments.
   Font myFont(L"Arial", 16);
   PointF origin(0.0f, 0.0f);
   SolidBrush blackBrush(Color(255, 0, 0, 0));
   StringFormat format;
   format.SetAlignment(StringAlignmentCenter);

   // Draw string.
   graphics.DrawString(
   string,
   11,
   &myFont,
   origin,
   &format,
   &blackBrush);
}



Тогда попробуй на прозрачном окне написать.


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
webgraf
Дата 26.10.2007, 17:53 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 5.6.2007

Репутация: нет
Всего: нет



MFC не использую ((.  Но даже если что на нем и писать - то оно тоже будет полупрозрачное.
А задача фактически - чтоб у разных элеметов на экране была разная прозрачность. Думаю все же попробовать поэксперементировать с окнами. Создать на полностью прозрачном окне другое прозрачное - с текстом. Только как вот этот текст потом заставить "затухать".  Фактически надо решить задачу одновременной прозрачности по одному цвету LWA_COLORKEY и прозрачности альфа-канала LWA_ALPHA. вот.

Это сообщение отредактировал(а) webgraf - 26.10.2007, 17:56
PM MAIL   Вверх
Andrey44
Дата 29.10.2007, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 8
Всего: 26



Ну во-первых это не MFC , а GDI+. smile 
А во-вторых, что-то я тебя не пойму - что именно ты хочешь сделать? smile 


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
webgraf
Дата 29.10.2007, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 5.6.2007

Репутация: нет
Всего: нет



smile Попробую объяснить. Значит что должно получится в итоге: на рабочем столе должны плавно появляться и исчезать текстовые строки. Причем не одновременно все, а в разном порядке, с разными задержками показа итд...  Задачу я разделил на следующие:
1. Показать на экране только строки без содержимого окна. Это сделать легко - достаточно применить SetLayeredWindowAttributes с указанием прозрачного цвета окна.
2. Реализовать тот самый эффект исчезания строк. Причем поотдельности для каждой.

Вот над вторым пунктом я и бьюсь. Как сделать чтобы окно одновременно имело прозрачный цвет LWA_COLORKEY да еще и имело неполную прозрачность?
И как сделать это отдельно для каждой строки? Ну скажем для каждой строки можно открыть новое окошко и играться с его параметрами...
PM MAIL   Вверх
Andrey44
Дата 29.10.2007, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 8
Всего: 26



А почему-бы тогда тебе просто не писать на рабочем столе?
Задавая прозрачность прозрачность цвета строки.
И это без всяких окон smile 


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
webgraf
Дата 29.10.2007, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 5.6.2007

Репутация: нет
Всего: нет



информация должна будет быть always on top. таким методом так получится?
да и в перспективе к этим строкам будут приделаны кнопки разные...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0453 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.