Полупрозрачный UserControl

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Полупрозрачный UserControl

Сообщение djalex777 » 16.12.2009 (Ср) 0:10

Никак не могу сообразить как такой можно реализовать. Есть 2 фрейма с текстами внутри. Нужно реализовать плавный переход между фреймами, т.е. к примеру, нажали на кнопку и фрейм1 начинает угасать (его прозрачность стремиться к полной), затем фрейм2 начинает проявляться (прозрачность начинает стремиться к 0). Подумал, что возможно реализовать UserControl, который был бы закрашен одноцветно (к примеру белый цвет) и изменялась бы в нём только прозрачность. Не знаю даже с чего начать. Может можно решить задачу как-то по-другому?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Полупрозрачный UserControl

Сообщение Хакер » 16.12.2009 (Ср) 0:12

Не нужно этого делать. Это не круто. Просто напишите хорошую, понятную, без лишних выпендрежей работающую и делающую это без ошибок программу. Это нереально круто.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Полупрозрачный UserControl

Сообщение Денис » 16.12.2009 (Ср) 10:09

Код: Выделить всё
Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Public Const LWA_ALPHA = &H2
Public Const WS_EX_LAYERED = &H80000
Public Const GWL_EXSTYLE = (-20)


Код: Выделить всё
'этот код вызывается один раз
    rc = GetWindowLong(CtlHWND, GWL_EXSTYLE)
    If Not (rc Or WS_EX_LAYERED) Then
        rc = rc Or WS_EX_LAYERED
    End If
    SetWindowLong CtlHWND, GWL_EXSTYLE, rc


Код: Выделить всё
'этот код вызывается много раз, по таймеру или в цикле
SetLayeredWindowAttributes CtlHWND, 0, Valuev, LWA_ALPHA


Попробуй это, Люк. Тока не уверен, что это сработает для контролов. И даже уверен, что не сработает, но направление поиска, как-никак!
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Re: Полупрозрачный UserControl

Сообщение djalex777 » 16.12.2009 (Ср) 13:37

Денис писал(а):Попробуй это, Люк. Тока не уверен, что это сработает для контролов.

Это не работает. Все возможности типа SetLayeredWindowAttributes я уже пробовал (вернее о некоторых было достаточно почитать, чтобы понять, что работать не будет)

Хакер писал(а):Не нужно этого делать. Это не круто. Просто напишите хорошую, понятную, без лишних выпендрежей работающую и делающую это без ошибок программу. Это нереально круто.

Крутость тут не причем. Программа понятна и уже работает без ошибок. Не плохо было бы "навести красоту".

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Полупрозрачный UserControl

Сообщение Antonariy » 16.12.2009 (Ср) 13:57

Лучший способ понять что-то самому — объяснить это другому.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Полупрозрачный UserControl

Сообщение Хакер » 16.12.2009 (Ср) 14:07

Не плохо было бы "навести красоту".

В этом нет ничего красивого. Зато в этом есть кое-что раздражающее. Мне например, когда я нажал "Далее", хочется просто увидеть следующую страницу. Мне нужна эта следующая страница. Ради неё я жал "Далее". Оно мне нужна немедленно и сейчас. И я желаю приложить усилие 10 тонн к черепной коробке автора ровно на тот срок, который в силу его (автора программы) долбонутости я должен видеть чертов переходный процесс.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Полупрозрачный UserControl

Сообщение Antonariy » 16.12.2009 (Ср) 14:19

Ну, тут задача немного другая — два фрейма одновременно на одной и той же странице. Наверное можно сделать так, чтобы работать в выбранном фрейме можно было не дожидаясь его полного появления. Можно переходный процесс сделать меньше секунды. В общем, зависит от чувства вкуса и прямизны рук разработчика.
Лучший способ понять что-то самому — объяснить это другому.

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Re: Полупрозрачный UserControl

Сообщение djalex777 » 16.12.2009 (Ср) 15:09

Хакер писал(а):В этом нет ничего красивого.

В чем, в этом? Красота достигается совокупностью.

Естественно никто не собирается ставить задержку в 30 секунд между угасанием одного фрейма и появлением другого, и делать этот процесс незабываемым и полным красоты. Программа, помимо основного дизайна, дополняется набором, так скажем, мелочей. Но в целом, если вспоминать потом такой интерфейс, то он будет не только удобным, но и красивым.

Antonariy писал(а):Тынц.

Спасибо, посмотрю. Пробовал искать по "transparent control". Про альфу не подумал :)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Полупрозрачный UserControl

Сообщение Хакер » 16.12.2009 (Ср) 15:17

А сколько ты собрался делать задержку?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Re: Полупрозрачный UserControl

Сообщение djalex777 » 16.12.2009 (Ср) 15:25

Я ещё эффект реализовать не могу, а ты про задержку спрашиваешь... Стартовое значение - удвоенное время угасания пункта меню в Windows (для полного исчезновения первого фрейма и полного проявления второго).

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Полупрозрачный UserControl

Сообщение Хакер » 16.12.2009 (Ср) 15:56

Сколько миллисекунд?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Re: Полупрозрачный UserControl

Сообщение djalex777 » 16.12.2009 (Ср) 16:09

800

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Полупрозрачный UserControl

Сообщение Хакер » 16.12.2009 (Ср) 16:11

Ок. То есть ты согласен терпеть 10 тонн на своей голове в течении 800 миллисекунд?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Полупрозрачный UserControl

Сообщение Antonariy » 16.12.2009 (Ср) 16:17

Я ещё эффект реализовать не могу
Советую потренероваться на IE, в нем сделать такой эффект просто.
А вот с контролами я думаю это вообще сделать невозможно.
Лучший способ понять что-то самому — объяснить это другому.

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Re: Полупрозрачный UserControl

Сообщение djalex777 » 16.12.2009 (Ср) 16:59

Хакер писал(а):Ок. То есть ты согласен терпеть 10 тонн на своей голове в течении 800 миллисекунд?

Не неси чушь. Твоё мнение о приложении 10 тонн и долбонутости автора никак не доказывает то, что использование перехода "плохо" и уж тем более самого вопроса темы и способа его решения. Или ты что-то другое хотел показать?

Antonariy писал(а):Советую потренероваться на IE, в нем сделать такой эффект просто.
А вот с контролами я думаю это вообще сделать невозможно.

В ie уже натренировался...

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Полупрозрачный UserControl

Сообщение Antonariy » 16.12.2009 (Ср) 17:03

djalex777 писал(а):В ie уже натренировался...
Можно посмотреть на результат? Действительно ли это так тяжело, как 10 тонн? :)
Просто помню интерфейсы со свистелками во всяких играх и не скажу, чтобы всегда и везде они раздражали.
Лучший способ понять что-то самому — объяснить это другому.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Полупрозрачный UserControl

Сообщение alibek » 16.12.2009 (Ср) 17:17

В играх они обычно делаются профессиональными дизайнерами и делаются качественно. Потому и не раздражают.
А вот при работе я все эффекты и красивости отключаю. И если плавное проявление/угасание меню/подсказов просто не нравится, то "гладкая прокрутка" списков раздражает.
Так что если и делать такой эффект, но применять его только в том случае, если он в текущем оформлении разрешен.
Lasciate ogni speranza, voi ch'entrate.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Полупрозрачный UserControl

Сообщение Antonariy » 16.12.2009 (Ср) 17:22

В играх они обычно делаются профессиональными дизайнерами и делаются качественно.
Именно об этом я и говорил.
Лучший способ понять что-то самому — объяснить это другому.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Полупрозрачный UserControl

Сообщение Хакер » 16.12.2009 (Ср) 17:25

Или ты что-то другое хотел показать?

Дело в том, что если в течении пусть даже короткого времени доставлять тебе боль, единственная мысль, которая у тебя при этом будет: "Скорее бы это прекратилось". Ты будешь хотеть, чтобы болезненное ощущение длилось как можно меньше, а ещё лучше, чтобы оно вообще не начиналось.

То же самое относится к твоему спецэффекту. Заставлять пользователя ждать 800 мс --- это пытка. Особенно, если придётся прыгать туда-сюда между страницами мастера.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Полупрозрачный UserControl

Сообщение MIT » 16.12.2009 (Ср) 17:52

Хакер, по-моему ты перегибаешь палку...
Я согласен, что в интерфейсе, который предполагает многократное переключение этих фреймов, эффект быстро надоест, однако при его использовании в мастере, которым ты воспользкешься раз или два в жизни, при условии его кратковременности, не сильно будет мешать, просто потому, что это время все равно не может быть тобой использовано для чего-либо иного: ты за эту секунду не успеешь прочитать весь текст с фрейма, проанализировать значимость редактируемых параметров и выставить их в необходимое тебе положение.
Хотя для тебя это дело принципа, ты все равно не согласишься ни со мной, ни с кем бы то ни было другим.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Полупрозрачный UserControl

Сообщение Хакер » 16.12.2009 (Ср) 17:59

В мастере, которым пользуешься раз в жизни, нет смысла делать такие эффекты.
В мастере, которые пользуешься чаще, нельзя по вышеуказанным причинам.

Ты знаешь, я открыл для себя, что работаю на компьютере очень быстро. Открыл, когда смотрел запись видео с экрана: при обычной работе этого совершенно не ощущаешь. И по сравнению с этой скоростью работы, 800 мс --- это довольно длинный срок.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Полупрозрачный UserControl

Сообщение alibek » 16.12.2009 (Ср) 18:13

MIT писал(а):ты за эту секунду не успеешь прочитать весь текст с фрейма, проанализировать значимость редактируемых параметров и выставить их в необходимое тебе положение.

Секунда (или даже 800мс) — это очень много.
Задержки, которые не мешают работать лично мне — до 100-150мс.
Lasciate ogni speranza, voi ch'entrate.

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Re: Полупрозрачный UserControl

Сообщение djalex777 » 16.12.2009 (Ср) 20:30

Antonariy писал(а):Можно посмотреть на результат? Действительно ли это так тяжело, как 10 тонн? :)
Просто помню интерфейсы со свистелками во всяких играх и не скажу, чтобы всегда и везде они раздражали.

Готового (с красивым дизайном) результата нет возможности предоставить. Давно не занимался. Чисто функционально, вот примерчик накидал.
Вложения
test.html.rar
(1.06 Кб) Скачиваний: 67

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Полупрозрачный UserControl

Сообщение Antonariy » 16.12.2009 (Ср) 20:55

Во-первых, в IE это делается проще, во-вторых, это как раз тот случай, который вызывает коровье пользовательское бешенство.
Тренеруйтесь дальше.
Лучший способ понять что-то самому — объяснить это другому.

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Re: Полупрозрачный UserControl

Сообщение djalex777 » 16.12.2009 (Ср) 21:27

Antonariy писал(а):Во-первых, в IE это делается проще, во-вторых, это как раз тот случай, который вызывает коровье пользовательское бешенство.
Тренеруйтесь дальше.

Этот пример работает не только в IE. Это всего лишь пример функциональной реализации прозрачности в браузерах. Ни в коем случае он не претендует на звание лучший и удобный дизайн проект и никаким образом не отражает то, ради чего можно использовать плавный переход. Поэтому про "тот случай" - лишнее.

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Re: Полупрозрачный UserControl

Сообщение djalex777 » 17.12.2009 (Чт) 0:05

Сумел таки сделать UserControl с прозрачностью. Никакой оптимизации. В принципе, доработав, можно и на UserControl кидать контролы. Непонятного цвета квадрат - это UserControl.
Вложения
TransparentUserControl.rar
(7 Кб) Скачиваний: 280

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Полупрозрачный UserControl

Сообщение Antonariy » 17.12.2009 (Чт) 11:45

Это всего лишь пример функциональной реализации прозрачности в браузерах.
Меня интересовал не всего лишь пример реализации, их у меня завались, а реализация именно того, что написано в первом посте, слово в слово. С точки зрения пощупать на пример удобства, а не подивиться технологиям.

В принципе, доработав
В этом-то все и дело. Думаю не ошибусь, если предположу, что пока что этот контрол является по сути картинкой, а помещенные в него контролы пропадают при включении прозрачности.
Лучший способ понять что-то самому — объяснить это другому.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Yandex-бот и гости: 2

    TopList