Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Win API


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / WinAPI

Выпуск № 204
от 03.03.2006, 04:15

Администратор:Калашников О.А.
В рассылке:Подписчиков: 267, Экспертов: 34
В номере:Вопросов: 1, Ответов: 2


Вопрос № 36218: Привет! Как средствами Windows сделать окно полупрозрачным??? Как получить цвет любого пиксела, который находится непосредственно за моим окном? Причём, если эти пикселы изменяются, моё окно должно реагировать на эти изменения. Буду рад л...

Вопрос № 36.218
Привет!
Как средствами Windows сделать окно полупрозрачным???
Как получить цвет любого пиксела, который находится непосредственно за моим окном? Причём, если эти пикселы изменяются, моё окно должно реагировать на эти изменения.
Буду рад любым идеям, только пожалуйста, поподробнее, и очень желательно с небольшим примером. Язык неважен. Спасибо.
Отправлен: 26.02.2006, 04:12
Вопрос задал: X-MAN (статус: 3-ий класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ерёмин Андрей
Здравствуйте, X-MAN!
В приложении выдержка из MSDN по теме прозрачности окон. Думаю, никаких воросов не возникнет. Но учтите, что прозрачные окна - это всё-таки новые технологии и на некоторых компьютерах это может не срабатывать. Кроме того, это не работает в версиях Windows, ниже Windows XP.
По поводу получение цвета пикселей - можно узнать цвет пикселя на экране, через объект Screen, но при этом ваша форма будет на экране. Чтобы узнать цвет пикселя за формой, можно воспользоваться таким несложным алгоритмом:
- свернуть форму;
- прочитать цвет пикселя;
- развернуть.
Естественно, сделать всё нужно за несколько миллисекунд, но не уверен, что это будет работать везде, т.к. производительность у компьютеров разная.

Приложение:

---------
Нет правила без исключений. Правило без исключений - исключение из правил.

Ответ отправил: Ерёмин Андрей (статус: Профессионал)
Отправлен: 26.02.2006, 07:30
Оценка за ответ: 3
Комментарий оценки:
Спасибо за цитату, но всё же я хотел узнать, как это делать средствами windows, а не .NET framework!

Отвечает: Татьяна
Здравствуйте, X-MAN!
Для этого есть функция SetLayeredWindowAttributes
правда нужно не забывать с помощью setwindowlong установить стиль окна WS_EX_LAYERED, это выглядит примерно так:

SetWindowLong(hndl,GWL_EXSTYLE, getwindowlong(hndl,GWL_EXSTYLE) or WS_EX_LAYERED);
SetLayeredWindowAttributes(hndl,0, round((255 * 70) / 100), LWA_ALPHA);

тут прозрачность окна 70%

---------
Нет ничего невозможного!!!
Ответ отправила: Татьяна (статус: Студент)
Отправлен: 26.02.2006, 16:20
Оценка за ответ: 5
Комментарий оценки:
Спасибо, это то что нужно!!!


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.16 от 01.03.2006
Яндекс Rambler's Top100

В избранное