![]() |
|
Модераторы: gambit, Partizan |
![]()
|
|
| ZUBR80 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 17.5.2005 Репутация: нет Всего: 2 |
В форме можно установить TransparencyKey...
А можно нечто подобное установить у контрола? |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
Можно попробовать выставить у контрола стиль ControlStyles.SupportsTransparentBackColor, и задать полностью прозрачный BackColor:
Всё, теперь у контрола прозрачный бэкграунд. -------------------- ![]() |
|||
|
||||
| amarenkov |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 21.2.2008 Где: Воронеж Репутация: нет Всего: нет |
||||
|
||||
| vponomarov |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 407 Регистрация: 11.8.2007 Где: Киев Репутация: 5 Всего: 12 |
||||
|
||||
| Walker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 363 Регистрация: 23.10.2006 Репутация: 3 Всего: 16 |
Как вариант: я для подготовки фигурных элементов управления брал на вооружение формат gif - возможность прозрачного фона и статью Creating Bitmap Regions for Forms and Buttons
Это сообщение отредактировал(а) Walker - 10.4.2008, 12:15 -------------------- "От вчерашних побед остаётся усталость, если завтрашний день не сулит ничего..." |
|||
|
||||
| amarenkov |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 21.2.2008 Где: Воронеж Репутация: нет Всего: нет |
Спасибо, Walker, сейчас попробую. Просто интересно: при банальном создании пользовательского компонента в среде Visual Studio 2008 никак нельзя ему сделать фон просто прозрачным?
|
|||
|
||||
| Kefir |
|
|||
|
«Hakuna Matata» ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1878 Регистрация: 25.1.2003 Где: Tampere, Suomi Репутация: нет Всего: 87 |
ну, собственно, это и есть смысл прозрачности. фон кнопки прозрачен, а под кнопкой лежит форма (к примеру), а значит, через кнопку начинает "просвечивать" фон родителя. |
|||
|
||||
| amarenkov |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 21.2.2008 Где: Воронеж Репутация: нет Всего: нет |
Ну нет, Kefir. Смысл прозрачности, для меня, это, когда через компонент видно все, что находится под ним, а не тупо цвет формы. У меня такой компонент (см. прикрепленный файл). Все, что там белое - должно быть прозрачным. Я попробовал, как советовал Walker, но это слишком тяжко в моем случае. Нельзя ли как-нибудь при создании компонента что-нибудь указать, чтобы Windows ничем не заполняла область контрола?
Присоединённый файл ( Кол-во скачиваний: 48 )
Control.JPG 4,22 Kb |
|||
|
||||
| Kefir |
|
|||
|
«Hakuna Matata» ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1878 Регистрация: 25.1.2003 Где: Tampere, Suomi Репутация: нет Всего: 87 |
нет, имхо, нельзя сказать, что "вот тут прозрачность через всю программку". надо делать эту область прозрачной везде до твоего контрола. если же тебе надо просто как отдельную форму - ставь форму просто прозрачную а на ней уже делай кнопки, у которых фон - PNG картинка. или же если у тебя это занимает только часть формы (т.е. на остальном пространстве формы есть что-то ещё, что требует наличие обычного фона - делай TransparencyKey у формы. то есть ставь фон - картинку, где область прозрачности имеет цвет TransparencyKey. и уже на эту область ставь кнопки.
Добавлено через 1 минуту и 15 секунд может и можно как то идти из самого контрола по всем родителям и с ними уже заморачиваться, но это, по-моему, ужасно |
|||
|
||||
| amarenkov |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 21.2.2008 Где: Воронеж Репутация: нет Всего: нет |
Как-то мы не можем найти общего языка
Добавлено через 4 минуты и 29 секунд А сейчас получается так: с использованием
вместо имеджа, я вижу цвет формы. Просто цвет формы под моим компонентом; с использованием через чур уж тяжко, мне кажется будет постоянно переопределять регион контрола, особенно, если учесть, что круг с буквами у меня вращается, а внутренний джойстик может двигаться. |
|||
|
||||
| vponomarov |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 407 Регистрация: 11.8.2007 Где: Киев Репутация: 5 Всего: 12 |
amarenkov, попробуй у своего контрола переопределить OnPaintBackground следующим образом:
|
|||
|
||||
| Kefir |
|
|||
|
«Hakuna Matata» ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1878 Регистрация: 25.1.2003 Где: Tampere, Suomi Репутация: нет Всего: 87 |
vponomarov, нет, это неправильно - будет крякозябры рисовать ненужные.
amarenkov, всё, теперь я понял о чём ты. так вот, должен тебя огорчить - это невозможно. вкратце: эта прозрачность - не совсем прозрачность в полном смысле. на месте этой самой "прозрачности" будет то, находится на родителе, не более. т.е. если у тебя структура такая: - Форма - Картинка - Твой контрол То ВСЕГДА будет форма - в .НЕТе нет возможности сделать то, что ты хочешь. Однако, можно изгалится - поставить, к примеру, картинку фоном формы. или же фоном родителя твоего контрола - тогда должно быть то, что ты хочешь. Итог: твой контрол опрашивает фон его родителя, ему наплевать на детей его родителя - они никогда не будут показаны в прозрачном месте. То есть возможные варианты: - Форма с фоном Картинка - Твой контрол Или: - Форма - Панель с фоном Картинка - Твой контрол И так далее. http://www.experts-exchange.com/Programmin...Q_20492791.html
Это сообщение отредактировал(а) Kefir - 10.4.2008, 14:22 |
|||
|
||||
| amarenkov |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 21.2.2008 Где: Воронеж Репутация: нет Всего: нет |
Спасибо, Kefir.
Итак, вот что я в итоге сделал (проверено, работает):
Таким образом я отрисовываю всех "братьев" для этого компонента. Получается вполне реалистичная прозрачность. Надо только в этот кусок вставить ограничение, чтобы отрисовывались только низлежащие и в правильном порядке. И еще где-то при создании компонента надо на все низлежащие компоненты повесить обработчик события Invalidated, чтобы корректно обрабатывать изменение внешнего вида контролов под моим. Подводя итог, скажу, что ... попробую я лучше с регионами, как предлагалось несколькими постами выше |
|||
|
||||
| shamahn |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 13.5.2010 Репутация: нет Всего: нет |
я нашел другой подход в 1 строку:
в инициализации компонента ставим this.BackgroundImage = null; только при перемещении возможна неплавная отрисовка |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |