Показать сообщение отдельно
Старый 17.07.2012, 15:03   #164
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,366
Написано 2,476 полезных сообщений
(для 6,864 пользователей)
Ответ: Вопрос-Ответ (для новичков BlitzMax)

1) Припашем виндовые WinApi ф-ции
Extern "Win32"
    
Function SetWindowRgn(hWndhRgnbRedraw)
    Function 
CreateRectRgn(nLeftRectnTopRectnRightRectnBottomRect)
    Function 
CombineRgn(hrgnDesthrgnSrc1hrgnSrc2fnCombineMode)
End Extern 
2) Эта фция принимает на вход
hWnd - хендл окна
Skin - пиксельная карта
Function SkinWindowII(hWnd:Int Skin:TPixmap)
    Const 
NOTHING=-1
    Local RectRgn 
CreateRectRgn(0000)
    
Local X% , Y% , StartX% , argb:Long
    
    
For Y=0 Until Skin.Height
        
For X=0 Until Skin.Width
        
            argb 
ReadPixel(skinXY)         
            If (
argb <> NOTHING)
                If 
StartX = -1
                    StartX 
X
                
EndIf
            Else
                If 
StartX > -
                    Local MaskLine
                    MaskLine 
CreateRectRgnStartX Y+)
                    
CombineRgn RectRgn RectRgnMaskLine )
                    
DeleteObject MaskLine
                    StartX 
= -1
                
EndIf
            EndIf
        
Next
        
If StartX > -
            Local MaskLine
            MaskLine 
CreateRectRgnStartX YY+)
            
CombineRgn RectRgn RectRgn MaskLine)
            
DeleteObject MaskLine
            StartX 
= -1
        
EndIf
    
Next
    SetWindowRgn 
hWnd RectRgn True)
End Function 
Думаю хендл окна ты получить сможешь сам.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Nex (18.07.2012)