Вопрос из области 3D

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

DKbelRoma
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 282
Зарегистрирован: 13.09.2007 (Чт) 23:32
Откуда: Из Кривого Рога

Вопрос из области 3D

Сообщение DKbelRoma » 15.11.2007 (Чт) 15:12

Можно ли как-то зделать что-бы при включении формы (моего проэкта,программы) - форма была прозрачная ,и постипенно набирала цвет!
------------------------------
Кто знает :roll: выложите код пожалуйста,или подскажите где его Юзать??? :D Зарание спасибо!
«Не важно, откуда ты. Важно - где ты.»

Anubis
Обычный пользователь
Обычный пользователь
 
Сообщения: 53
Зарегистрирован: 02.11.2007 (Пт) 10:18

Сообщение Anubis » 15.11.2007 (Чт) 16:21

Хм... а ещё колёсики крутились, и супер рендер был :lol:
Ладно на самом деле можно попробовать с помощью AlphaMask попробовать, по крайней мере в С++ так... А в VB такого не видел...
Типа таймер поставить с интервалом в милесекундах и через определённое время интенсивность менять? Если чесно я присоединяюсь к вопросу, подскажите как?
Мы родились на этот свет, и ни кто не в праве его выключать!

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Re: Вопрос из области 3D

Сообщение Yurich » 15.11.2007 (Чт) 18:01

DKbelRoma писал(а):Можно ли как-то зделать что-бы при включении формы (моего проэкта,программы) - форма была прозрачная ,и постипенно набирала цвет!
------------------------------
Кто знает :roll: выложите код пожалуйста,или подскажите где его Юзать??? :D Зарание спасибо!

Вопрос не из области 3Д :? Вам сюда:
[url]
http://bbs.vbstreets.ru/viewforum.php?f ... 3da74b9d9c
[/url][/url]
- Какой треугольник не подвластен законам геометрии?
- У которого все углы тупые!

Mexanik
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 04.09.2007 (Вт) 7:09

Сообщение Mexanik » 23.11.2007 (Пт) 9:51

Прозрачность формы в Visual Basic .NET есть,как параметр самой формы.Ну а делать ее постепенно прозрачной можно хоть через счетчик в таймере.В Вис Басе 6 такого нет(по крайней мере у меня,может можно с какойто библы системной это будет выдернуть?). :)

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 23.11.2007 (Пт) 17:44

Есть два пути -- функция AnimateWindow с константой AW_BLEND. Но результат её действия тебя не устроит -- окошко будет черное и для нормальной её работы надо сабклассить WM_PRINT... Второй вариант -- подправить стиль окну до WS_EX_LAYERED, используя SetWindowLong. А затем в таймере уменьшать прозрачность, используя SetLayeredWindowAttributes.
Salus populi suprema lex

|( () ( T |/| |(
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 211
Зарегистрирован: 01.10.2005 (Сб) 15:49

Сообщение |( () ( T |/| |( » 23.11.2007 (Пт) 23:42

Код: Выделить всё
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, _
ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, _
ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, _
ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Public Const LWA_COLORKEY = &H1
Public Const LWA_ALPHA = &H3
Public Const GWL_EXSTYLE = (-20)
Public Const WS_EX_LAYERED = &H80000

Public Function SetTransparent(hwnd As Long, Layered As Byte) As Boolean
On Error GoTo 1
Dim Ret As Long
Ret = GetWindowLong(hwnd, GWL_EXSTYLE)
Ret = Ret Or WS_EX_LAYERED
SetWindowLong hwnd, GWL_EXSTYLE, Ret
SetLayeredWindowAttributes hwnd, 1, Layered, LWA_ALPHA
SetTransparent = True
1 Exit Function
End Function

Layered - от 0 до 255.
Только не понятно почему вопрос из области 3d. Если ты это хочешь проделать с формой на которой отоброжаеться 3d, то нечего не выйдет. В таком случае надо делать скриншот, выводить его через DX, и менять его прозрачность.
С=[::::::::::> ™ e398wallpapers.narod.ru

DKbelRoma
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 282
Зарегистрирован: 13.09.2007 (Чт) 23:32
Откуда: Из Кривого Рога

Сообщение DKbelRoma » 24.11.2007 (Сб) 11:28

|( () ( T |/| |(
спасибо! Это мне подходит! :D Помог!!!
«Не важно, откуда ты. Важно - где ты.»

DKbelRoma
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 282
Зарегистрирован: 13.09.2007 (Чт) 23:32
Откуда: Из Кривого Рога

Сообщение DKbelRoma » 25.11.2007 (Вс) 18:16

что то код неработает! Его нужно вставить на форму??? :?
«Не важно, откуда ты. Важно - где ты.»

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 26.11.2007 (Пн) 0:07

Его нужно вставить в стандартный модуль. Затем добавить таймер на форму, указать для него интервал, в процедуре обработки срабатывания таймера вызывать функцию SetTransparent, передавая в нее увеличивающееся значение прозрачности.
А таймер инициализировать в процедуре обработки загрузки формы.
Salus populi suprema lex


Вернуться в Мультимедиа

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

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

    TopList