Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Как обрезать форму по рисунку? Добавлено: 20.10.04 13:23  

Автор вопроса:  Debuger
Я столкнулся с такой проблемой:
На форме есть рисунок, как сделать так чтобы в тех местах где красный цвет
Рисунка красный – форма становилась прозрачной.
Заранее благодарен!

Ответить

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

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



ICQ: 176176951 

Вопросов: 14
Ответов: 655
 Профиль | | #1 Добавлено: 20.10.04 13:34
http://vbnet.ru/articles/showarticle.aspx?id=22

Ответить

Номер ответа: 2
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #2
Добавлено: 20.10.04 14:36
Pashenko, всё это правильно, я на этом примере учился, о работает верно... но и подглючно названы имена переменных: Y измеряет расстояние по горизонтали, а X - по вертикали. Присмотритесь повнимательнее к функции lGetRegion:
lY = lWidth

Но всё работает, пртензий нет. А... есть ещё один способ обрезать форму по картинке, и при этом НЕ использовать регионы вообще:

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
Const GWL_EXSTYLE = (-20)
Const WS_EX_LAYERED = &H80000
Const LWA_ALPHA = &H2
Const LWA_COLORKEY = &H1
Dim Ret As Long
Ret = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
Ret = Ret Or WS_EX_LAYERED
SetWindowLong hWnd, GWL_EXSTYLE, Ret
SetLayeredWindowAttributes hWnd, RGB(0, 0, 0), 255, LWA_COLORKEY Or LWA_ALPHA

Этот пример будет работать только в 2k, XP. Здесь черный цвет с формы будет обрезан - регулируется RGB. Зато дополнительно можно делать полупрозрачность, устанавливая параметр bAlpha от 0 до 255... Если добавить к примеру с регионами определение версии Win и этот код, то можно ускорить рисование окон в 2k,XP! ;)

Ответить

Номер ответа: 3
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #3
Добавлено: 20.10.04 14:38
Ещё один минус метода - метод действует одновременно на все видимые части контролов, так что с ним надо аккуратнее..

Ответить

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



Вопросов: 18
Ответов: 23
 Профиль | | #4 Добавлено: 20.10.04 18:40
Да это то что нужно.
http://vbnet.ru/articles/showarticle.aspx?id=22
Большое спасибо.

Ответить

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #5 Добавлено: 20.10.04 22:06
:) Да уж, Rezak'у бы что-нибудь обрезать... :))
:) Ну, например обрезать форму по рисунку :))))

Ответить

Страница: 1 |

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



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