楕円形の領域を作成          <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