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

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

by
Offline Offline

« : 29-09-2010 10:05 » 

доброго времени суток.
Ребята, подкиньте пару идей реализации, пжалста =))
У меня есть форма, на форме панель, на панель фоновым рисунком вставляю часть скрина, которая как раз под формой (точнее под клиентской областью).
Хочется сделать, чтобы при перетаскивании окна создавалось впечатление прозрачности формы, т.е. менялась картинка. Проблема в том что я не знаю как можно это реализовать...=((
Хочется чтобы картинка менялась плавно, ну или очень часто...
Когда, в коком событии нужно перерисовывать скрин?
наверное не очень понятно ...  Краснею, но может кто-нибудь знает как это можно реализовать ...  Краснею

не знаю как правильно тему написать  Краснею переименуйте если что...  Краснею
« Последнее редактирование: 30-09-2010 05:49 от Okkkks » Записан
Алексей++
кот глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 01-10-2010 09:44 » 

по идее, в обработчике сообщения WM_PAINT (что там в шарпе - не знаю...)
Перед отрисовкой взять с экрана прямоугольник под окном, сделать из него фон
Записан

microcod
Интересующийся

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

« Ответ #2 : 01-10-2010 17:17 » 

Свойство Opacity задаёт прозрачность формы.  Улыбаюсь На половину прозрачная форма:
Код:
Opacity = 0.5;

Всё это можно сделать в конструкторе форм. Улыбаюсь
Записан

Есть хорошие и плохие вещи, только дибилы думают что это не так.
Алексей++
кот глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #3 : 01-10-2010 17:38 » 

microcod, это же общая прозрачность, а тут надо не это, мне кажется.
Записан

Okkkks
Помогающий

by
Offline Offline

« Ответ #4 : 05-10-2010 06:06 » 

с OnPaint пробовала - плохо получилось =((
пробовала отслеживать перемещение формы тож не так как хотелось бы =((
думала даже таймер прикрутить =)), но пока остановилась на свойстве Opasity это конечно не совсем то что хотелось, но уж лучше так чем никак =))

Спасибо за помощь =))
Записан
Алексей++
кот глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #5 : 05-10-2010 06:14 » 

Okkkks, в винапи есть возможность создать окно с невидимым фреймом. Тогда все точки фрейма, не закрытые контролами или нарисованными в WM_PAINT пикселами прозрачные и даже на мышь не реагируют. Но тут придётся тебе дорисовать вручную рамку и заголовок, а также реализовать таскание мышью. Такое пойдёт ?
Записан

Алексей++
кот глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #6 : 05-10-2010 06:18 » 

О, кстати, ещё один приём из Qt вспомнился. Дело в том, что Opasity  влияет на всё сразу, все элементы и графика становятся полупрозхрачными. Так вот - в обработчике OnPaint форма отрисовалась родным обработчиком (MyForm::OnPaint() ), затем после этого выключаешь Opasity , рисуешь графику поверх (она должна быть яркая), снова включаешь Opasity. Должно прокатить, но рисование будет муторным )
Записан

Okkkks
Помогающий

by
Offline Offline

« Ответ #7 : 05-10-2010 09:23 » 

мои начальники согласились на всё прозрачное =))
сказали что им всё равно =)) а посиму не будем больше ничего мудрить =))
только вот теперь не знаю как мне окно модальным сделать... но это уже другая тема...

спасибо, я и не знала что можно вот так вот сверху отрисовывать  Краснею
Записан
Алексей++
кот глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #8 : 05-10-2010 09:42 » 

только вот теперь не знаю как мне окно модальным сделать...
а что с модальным, проблемы возникают ?

я и не знала что можно вот так вот сверху отрисовывать
можно и иногда необходимо Улыбаюсь
Записан

Okkkks
Помогающий

by
Offline Offline

« Ответ #9 : 06-10-2010 06:05 » 

да с модальным были проблемы  Краснею ShowDialog() показывал только в пределах программы, а мне нужно чтобы вообще поверх всех
Решила так (вдруг каму-нибудь пригодится  Краснею):
в конструкторе формы написала TopMost = true;

Спасибо за помощь =))
Записан
Алексей++
кот глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #10 : 06-10-2010 06:15 » 

Okkkks, это называется "Системное модальное" Улыбаюсь Иногда удобно, но иногда может раздражать пользователя тем, что выскакивает поверх всего и перехватывает фокус. Об этом тоже задумывайся
Записан

Okkkks
Помогающий

by
Offline Offline

« Ответ #11 : 06-10-2010 07:36 » 

да я и не часто им пользуюсь =)), в основном конечно думаю что бы я думала о программере написавшем это нечто =))
 но тут хотят, а я не вижу в этом ничего плохого, а посему  моё дело маленькое "хотите-нате" =))
« Последнее редактирование: 06-10-2010 07:38 от Okkkks » Записан
Алексей++
кот глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #12 : 06-10-2010 07:40 » 

ясно )
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines