楕円形の領域を作成 <TOP>
楕円形の領域を作成します。
CreateEllipticRgn 円形・楕円形の領域を作成
SetWindowRgn 指定の領域をウィンドウ領域として設定
例では、BmpButtonに図のBitmap(320×52)を貼り付けています。
Bitmapは左半分の絵(160×52)を右下方向に各1ピクセル移動させたものを並べています。
BmpButtonをクリックし、BmpButtonを楕円形にしています。
'================================================================ '= 楕円形の領域を作成 '= (CreateEllipticRgn.bas) '================================================================ #include "Windows.bi" ' 円形・楕円形の領域を作成 Declare Function Api_CreateEllipticRgn& Lib "gdi32" Alias "CreateEllipticRgn" (ByVal X1&, ByVal Y1&, ByVal X2&, ByVal Y2&) ' 指定の領域をウィンドウ領域として設定 Declare Function Api_SetWindowRgn& Lib "user32" Alias "SetWindowRgn" (ByVal hWnd&, ByVal hRgn&, ByVal bRedraw&) Var Shared BmpButton1 As Object BmpButton1.Attach GetDlgItem("BmpButton1") '================================================================ '= '================================================================ Declare Sub BmpButton1_on edecl () Sub BmpButton1_on() Var cw As Long Var ch As Long Var hWnd As Long Var hr As Long Var Ret As Long cw = BmpButton1.GetWidth ch = BmpButton1.GetHeight hWnd = BmpButton1.GethWnd hr = Api_CreateEllipticRgn(0, 0, cw, ch) Ret = Api_SetWindowRgn(hWnd, hr, -1) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End