![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Enteropoly |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 17.6.2009 Репутация: нет Всего: нет |
Что-то я покопался в инете, но проблему не решил. Итак...
Для своей игры я хочу использовать такую штучку: 3 слоя рисования + "Тачскрин". Для этого мне потребуется 4 формы одинакового размера. Самая нижняя форма (слой рисования 3) делается непрозрачной, остальные три над ней (слои рисования 2, 1 и тачскрин) - прозрачными. Тачскрин берёт на себя все функции по кликам, скроллам и.т.п., а 3 формы под ним только отрисовывают происходящее (в отдельных потоках). Вопрос таков: как мне сделать форму прозрачной, но в то же время рисовать на ней через Control.Graphics вполне себе непрозрачные квадратики-кружочки? Много что перепробовал, пока безрезультатно... Тестил, к примеру: - Различные TransparencyKey и Backcolor (не работает) - this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); this.SetStyle(ControlStyles.UserPaint, true); this.BackColor = Color.Transparent; (работает почему-то только частично в самых неожиданных местах (см. скриншот)) Формы, если что, растянуты на весь экран (по текущему разрешению экрана) и у них, само собой, нету бордеров. ![]() ЗЫ. На скриншоте - кусочек игрового поля, внутри маленьких кружков форма прозрачна и виден текст в visual studio. Изначально форма белая, но почему-то перекрашивается в серую. Это сообщение отредактировал(а) Enteropoly - 16.7.2009, 17:29 Присоединённый файл ( Кол-во скачиваний: 35 ) ![]() |
|||
|
||||
Enteropoly |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 17.6.2009 Репутация: нет Всего: нет |
Итак, если добавить в код отрисовки такое, например
то форма будет прозрачна, но и весь функционал её как бы тоже "просвечивается", ибо кликнуть на такую форму нельзя совершенно. Не пойдёт. ------------------- Ещё один апдейт. Если выставить Opacity = 0.01F, то форма будет прозрачно И сохранять функциональность! Но на такой форме всё равно нельзя рисовать... ![]() ------------------- Я тут покурил и подумал... Что если тачскрин сделать с opacity = 0.01, а прозрачные слои для рисования закрывать прямоугольником с прозрачной заливкой такой, типа с добавлением другого цвета в процентах, и процент выставить тоже близким к нулю. Теоретически (!) должно заработать ![]() А вообще на самом деле всё может оказаться намного проще =) Это сообщение отредактировал(а) Enteropoly - 16.7.2009, 21:49 |
|||
|
||||
Enteropoly |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 17.6.2009 Репутация: нет Всего: нет |
Да, всё оказалось намного проще =)
- У тачскрина делаем Opacity 0.01 - У прозрачных слоёв делаем BackColor, который не будет использоваться в рисовании (например Pink) и выставляется TransparencyKey = BackColor (или рисуется заполненный Pink'ом прямоугольник размером с форму перед основным рисованием). - При срабатывании эвента на тачксрине, райзим аналогичные эвенты на слоях. всё =) Вот результат - прозрачный слой для рисования под тачскрином =) ![]() Спасибо за внимание ![]() Это сообщение отредактировал(а) Enteropoly - 17.7.2009, 12:12 Присоединённый файл ( Кол-во скачиваний: 33 ) ![]() |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | .NET для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |