Страница: 1 |
A-A-A-A-A-A-A-A-A-A-A-A-A-.........A-A-A-A-A... Lyudi, srochno nuzhna pomosh` Mne nado activex contreol(sam delayu)obrezat` po konturu kartinki(naprimer, isklyuchaiya belyj cvet). tak vot kak eto delat`,
Если я правильно понял, то этот пример днлает форму по рисунку, удаляя фон белого цвета: Public Function lGetRegion(pic As PictureBox, lBackColor As Long) As Long Public Function FBP() dyk vot on ne obrezaet activex Padre, очень понятны твои комментарии: 'ñîçäàåì ïóñòîé ðåãèîí, ñ êîòîðîãî íà÷íåì ðàáîòó Что за кодировка? Западноевропейская? Voobsche kodirovka samaya obichnaya, prosto u menya glyuki kakie to s raskladkoy - to ona perekluchaetsa, to net Voobsche kodirovka samaya obichnaya, prosto u menya glyuki kakie to s raskladkoy - to ona perekluchaetsa, to net Voobsche kodirovka samaya obichnaya, prosto u menya glyuki kakie to s raskladkoy - to ona perekluchaetsa, to net Страница: 1 |
Вопрос: ActiveX
Добавлено: 23.03.03 23:05
Автор вопроса: AASoft
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
P
ICQ: 346632205
Вопросов: 5
Ответов: 86
Профиль | | #1
Добавлено: 23.03.03 23:45
Dim lRgn As Long
Dim lSkinRgn As Long
Dim lStart As Long
Dim lX As Long
Dim lY As Long
Dim lHeight As Long
Dim lWidth As Long
Dim ms As Long
'StartDebug ms
'ñîçäàåì ïóñòîé ðåãèîí, ñ êîòîðîãî íà÷íåì ðàáîòó
lSkinRgn = CreateRectRgn(0, 0, 0, 0)
With pic
'ïîäñ÷èòàåì ðàçìåðû ðèñóíêà â Pixel
lHeight = .Height / Screen.TwipsPerPixelY
lWidth = .Width / Screen.TwipsPerPixelX
For lX = 0 To lHeight - 1
lY = 0
Do While lY < lWidth
'èùåì íóæíûé Pixel
Do While lY < lWidth And GetPixel(.hDC, lY, lX) = lBackColor
lY = lY + 1
Loop
If lY < lWidth Then
lStart = lY
Do While lY < lWidth And GetPixel(.hDC, lY, lX) <> lBackColor
lY = lY + 1
Loop
If lY > lWidth Then lY = lWidth
'íóæíûé Pixel íàéäåí, äîáàâèì åãî â ðåãèîí
lRgn = CreateRectRgn(lStart, lX, lY, lX + 1)
CombineRgn lSkinRgn, lSkinRgn, lRgn, RGN_OR
'óäàëèì íåíóæíûé îáúåêò
DeleteObject lRgn
End If
Loop
Next
End With
lGetRegion = lSkinRgn
'StopDebug ms
End Function
Dim lRgn As Long
'çàãðóæàåì íà÷àëüíûé ðèñóíîê è âû÷èñëÿåì ðåãèîí
Form1.Picture1.Picture = LoadPicture(App.Path & "\1.bmp")
lRgn = lGetRegion(Form1.Picture1, vbWhite)
'ïðèêðåïëÿåì ðåãèîí ê íàøåìó îêíó è óäàëÿåì ýòîò ðåãèîí
SetWindowRgn Form1.hWnd, lRgn, True
DeleteObject lRgn
Form1.Height = Form1.Picture1.Height
Form1.Width = Form1.Picture1.Width
End Function
Номер ответа: 2
Автор ответа:
AASoft
Вопросов: 86
Ответов: 920
Профиль | | #2
Добавлено: 23.03.03 23:55
Номер ответа: 3
Автор ответа:
P
ICQ: 346632205
Вопросов: 5
Ответов: 86
Профиль | | #3
Добавлено: 24.03.03 00:08
Ну, тут уж ничем не могу помочь
Номер ответа: 4
Автор ответа:
AASoft
Вопросов: 86
Ответов: 920
Профиль | | #4
Добавлено: 24.03.03 00:16
a na vbstreets rabotaet, tol`ko ono po zadannym koordinatam, a ne po cvetu
Номер ответа: 5
Автор ответа:
msv
Вопросов: 34
Ответов: 312
Web-сайт:
Профиль | | #5
Добавлено: 24.03.03 07:30
Номер ответа: 6
Автор ответа:
P
ICQ: 346632205
Вопросов: 5
Ответов: 86
Профиль | | #6
Добавлено: 24.03.03 20:10
Номер ответа: 7
Автор ответа:
P
ICQ: 346632205
Вопросов: 5
Ответов: 86
Профиль | | #7
Добавлено: 24.03.03 20:10
Номер ответа: 8
Автор ответа:
P
ICQ: 346632205
Вопросов: 5
Ответов: 86
Профиль | | #8
Добавлено: 24.03.03 20:13