Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Transparent цвет user control  (Прочитано 11652 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« : 09-07-2009 14:19 » new

Есть форма, на которую накиданы контролы.

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


Проблема в том, что сквозь его полупрозрачность виднеется голый фон формы, а все прочие контролы, по идее находящиеся под ним, оказываются невидимыми.

Как это можно победить?

Один из вариантов - размещение этого контрола внутри крайнего верхнего, но это не подходит, поскольку всплывающий контрол имеет разные размеры и порывает собой разные части разных контролов в разные моменты времени. При попытке внедрить его в другой контрол, при выводе происходит clip его изображения по границе контрола-контейнера.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #1 : 10-07-2009 06:18 » 

Хммм ну очень специфично... А стилей никаких нет, чтобы с clip поиграться. На вскидку, нечто подобное встречал при расширении стандартных виндовских диалогов FileOpen/Save своими контролами. Там были различные стили для комбинирования с основной формой. Но это было в С++. Может и в дот нет есть нечто подобное? К сожалению мой опыт в нём пока ещё очень небольшой. Жаль
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #2 : 10-07-2009 13:18 » 

Димка, а ты как прозрачность контрола делаешь?

Вот такое даёт интересный результат, правда в моём эксперименте нестабильный:

Код:
        protected override CreateParams CreateParams
        {
            get
            {
                const int WS_EX_TRANSPARENT = 0x20;
                CreateParams cp = base.CreateParams;
                cp.ExStyle |= WS_EX_TRANSPARENT;
                return cp;
            }
        }
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 10-07-2009 19:48 » 

Джон, ну...

Код: (Text)
this.BackColor = Color.Transparent;

Твоим способом не пробовал. Я вот думаю, может контрол заменить окошком. Но проблема будет при перемещении родительского окна.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #4 : 11-07-2009 11:51 » 

Аааа понятно. Я был погуглил на работе. Ибо прозрачные контролы - одна из самых сложных задач современной магии. В основном все сходятся именно к этому способу. Opacity работает только для окон верхнего уровня. Если тебе не горит, то я в понедельник выложу линк (ща уже просто не помню где его был нашёл) с подробным описанием методы.
Так же там переписывалась OnSize, OnErazeBackground и делалась своя Invalidate. Если горит, то гляну сегодня вечером. Думаю, что найду.

В качестве альтернативы видел прозрачную панельку (Pannel). Попробуй в этом направлении. К сожалению все линки на работе остались.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 12-07-2009 09:26 » 

Джон, ну неделя у меня ещё есть.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #6 : 14-07-2009 09:40 » 

Сорри, вчера я так до работы и не добрался. ПОэтому сегодня.

Вот что я был тогда нашёл:

http://www.track7.org/hb/thread107/
http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/a9c78c36-0569-4339-a499-b8411c5bbffb
http://bytes.com/groups/net-c/248836-need-make-user-control-transparent <- вот эта как бы суммирующая

Вот тут тоже неплохой ресурс с примерами, только там надо зарегиться (бесплатно и вроде даже как без подтверждения)
http://www.c-sharpcorner.com/
там в поиске задай "Transparent"

http://www.c-sharpcorner.com/UploadFile/Nildo/NSA106032008213555PM/NSA1.aspx
http://www.c-sharpcorner.com/UploadFile/Nildo%20Soares%20de%20Araujo/TransparentControls11152005074108AM/TransparentControls.aspx
http://www.c-sharpcorner.com/UploadFile/ShrutiShrivastava/TransparentPanelinCSharp11232005015233AM/TransparentPanelinCSharp.aspx
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines