Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Mask Добавлено: 28.10.08 20:41  

Автор вопроса:  tz-man | Web-сайт: terabayt.info | ICQ: 369431909 
Здравствуйте. Есть элемент Shockwave Flash.

Интересует, каким образом сделать так, чтобы отображалась только определенная часть данного компонента произвольной формы, и самой формы VB под ним? Грубо говоря, мне нужно сделать круглые часы для десктопа через этот компонент на VB.

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 stas



Вопросов: 3
Ответов: 12
 Профиль | | #1 Добавлено: 28.10.08 20:49
Обрежь через API. Регионами

Ответить

Номер ответа: 2
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #2
Добавлено: 28.10.08 22:28
хм.. ощущение имеется, что тут такое не прокатит

Ответить

Номер ответа: 3
Автор ответа:
 stas



Вопросов: 3
Ответов: 12
 Профиль | | #3 Добавлено: 29.10.08 14:01
Чего это не получится? Получится. Еще как.

Private Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long


Private Sub Form_Load()
  SetWindowRgn hWnd, CreateEllipticRgn(0, 0, 200, 200), True
End Sub

Это для формы. А для контрола вместо hWnd подставь
name_control.hwnd Ну а координаты сам выберешь, какие нужно.

Ответить

Номер ответа: 4
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #4
Добавлено: 29.10.08 20:37
ну я попробовал сделать удаление региона по цвету. Так на форме белый удалился, а контролу хоть бы хны!

Ответить

Номер ответа: 5
Автор ответа:
 stas



Вопросов: 3
Ответов: 12
 Профиль | | #5 Добавлено: 29.10.08 20:48
а это как «удаление региона по цвету»? Тебе ж надо форму обрезать по кругу, как я понял, так еще и отдельно контрол обрезать так же, той же функцией

Ответить

Номер ответа: 6
Автор ответа:
 stas



Вопросов: 3
Ответов: 12
 Профиль | | #6 Добавлено: 29.10.08 20:51
и кстати, можно ведь и ваще произвольную форму вырезать, но тогда надо несколько регионов комбинировать. Я попробовал только что кнопку обрезать под овал - не вопрос, все работает

Ответить

Номер ответа: 7
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #7
Добавлено: 29.10.08 20:54
а это как «удаление региона по цвету»?
Вот так:
  1. Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
  2. Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
  3. Public Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
  4. Private Const LWA_ALPHA = &H2
  5. Private Const LWA_COLORKEY As Long = &H1
  6. Private Const GWL_EXSTYLE = (-20)
  7. Private Const WS_EX_LAYERED = &H80000
  8.  
  9. Public Sub SetTranspColor(ByVal hWnd As Long, ByVal color As Long)
  10.     Call SetWindowLong(hWnd, GWL_EXSTYLE, GetWindowLong(hWnd, GWL_EXSTYLE) Or WS_EX_LAYERED)
  11.     Call SetLayeredWindowAttributes(hWnd, color, 0, LWA_COLORKEY)  'делаем прозрачным цвет color
  12. End Sub

Ответить

Номер ответа: 8
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #8
Добавлено: 29.10.08 20:55
>Тебе ж надо <...>
кстати не мне)

Ответить

Номер ответа: 9
Автор ответа:
 stas



Вопросов: 3
Ответов: 12
 Профиль | | #9 Добавлено: 30.10.08 12:29
Прикольно, будем юзать

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам