Прозрачность

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

Прозрачность

Сообщение Константиин » 31.08.2004 (Вт) 17:42

Как сделать, чтобы элемент становился всё более и более прозрачным, пока не исчезал совсем??? (Или что-нибудь в этом роде)

Заранее благодарен!!!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 31.08.2004 (Вт) 18:01

Во-первых, засадить ему стиль WS_EX_LAYERED... После чего вызывать setlayeredwindowattributes для изменения прозрачности :roll:
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Константиин
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 09.08.2004 (Пн) 17:33

Сообщение Константиин » 31.08.2004 (Вт) 18:21

Чуть поподробней можно

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 31.08.2004 (Вт) 18:24

Сначала получить текущий стиль, сделать ему OR WS_EX_LAYERED, потом установить его, и, наконец, воспользоваться.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 31.08.2004 (Вт) 22:02

Для ленивых есть готовый контрол: http://vbrussian.com/Controls.asp?ID=94

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 01.09.2004 (Ср) 18:10

Искренне надеюсь, что Константин уже все сделал и разобрался, но если нет - на всякий случай, вот (чтобы просто знал, как делается):
Код: Выделить всё
Const LWA_ALPHA = &H2
Const GWL_EXSTYLE = (-20)
Const WS_EX_LAYERED = &H80000

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long

Sub SetOpacity(ByVal Wnd As Long, ByVal OpacityLevel As Long)
SetWindowLong Wnd, GWL_EXSTYLE, GetWindowLong(Wnd, GWL_EXSTYLE) Or WS_EX_LAYERED
SetLayeredWindowAttributes Wnd, 0, OpacityLevel, LWA_ALPHA
DoEvents
End Sub
SetOpacity(<hWnd формы>, <Непрозрачность (0-255)>)
Примечание: работает только с формой (впрочем, как и все вышеупомянутое).

Константиин
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 09.08.2004 (Пн) 17:33

Сообщение Константиин » 01.09.2004 (Ср) 20:14

Конечно я очень благодарен за ваши ответы, но меня ольше интересуют другие элементы управления. :roll:
P.S.
Можно сделать чтобы он исчезал и как-нибудь по-другому!!! :wink:

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 02.09.2004 (Чт) 16:24

Честно говоря, я не очень уверен, что можно это как-нибудь реализовать... :roll:

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 02.09.2004 (Чт) 16:53

Константиин писал(а):Конечно я очень благодарен за ваши ответы, но меня ольше интересуют другие элементы управления. :roll:
P.S.
Можно сделать чтобы он исчезал и как-нибудь по-другому!!! :wink:

Какие именно? Можно просто цвет по таймеру менять в сторону цвета формы. Можно?
Изображение

Константиин
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 09.08.2004 (Пн) 17:33

Сообщение Константиин » 02.09.2004 (Чт) 20:14

Элемент будет распологаться поверх нескольких других, имеющих разные цвета. :!:

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 02.09.2004 (Чт) 21:41

Попробуй поставить контролам стиль OWNER_DRAW и рисовать их на прозрачном Brush'е. Может, поможет... Хотя сам не делал никогда. :roll:

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 02.09.2004 (Чт) 21:47

На брашах не рисуют, рисуют как раз ими :-)
Прозрачный (ака пустой) браш - тот, который не оставляет следа. Т.е. им что рисуй, что не рисуй, - нет разницы.
Или может быть, я тебя не так понял?
Изображение

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 02.09.2004 (Чт) 21:52

Да, ошибся :oops: Не на браше, а брашем :)
Я что имел ввиду - часть делать прозрачной, а часть нет... Если это, конечно, реально... Будет, как бы, не "опрозрачивание", а "свертывание". Хотя, если это не реально, извиняюсь. :roll:

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 02.09.2004 (Чт) 22:07

С использованием GDI+ более реально. Но всё равно нетривиально - придётся свои аналоги DrawEdge писать, и всё такое.
Изображение

Zer
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 460
Зарегистрирован: 26.09.2003 (Пт) 13:08
Откуда: Нижний Новгород

Сообщение Zer » 07.09.2004 (Вт) 22:50

Кстати прозрачность у меня из под ME не заработала. Глюков правда тоже не выдала. А вот из под XP всё гуд! Поганый XP...
Microsoft DirectX - Маломягкий Прямой Х...
Не откладывай на завтра то, что можно выпить сегодня...


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 24

    TopList  
cron