ビットマップパターンを持つ論理ブラシを作成          <TOP>


CreatePatternBrush 指定されたビットマップパターンを持つ論理ブラシを作成
FillRect ブラシで矩形領域を塗りつぶす
SetRect RECT構造体の値を設定
DeleteObject システムリソースを解放
CreateBitmap 指定された幅・高さ・色形式を持つビットマップを作成
GetDC 指定されたウィンドウのデバイスコンテキストのハンドルを取得
ReleaseDC デバイスコンテキストを解放
 

 

'================================================================
'= ビットマップパターンを持つ論理ブラシを作成
'=    (CreatePatternBrush.bas)
'================================================================
#include "Windows.bi"

Type RECT
    Left   As Long
    Top    As Long
    Right  As Long
    Bottom As Long
End Type

' 指定されたビットマップパターンを持つ論理ブラシを作成
Declare Function Api_CreatePatternBrush& Lib "gdi32" Alias "CreatePatternBrush" (ByVal hBitmap&)

' ブラシで矩形領域を塗りつぶす
Declare Function Api_FillRect& Lib "user32" Alias "FillRect" (ByVal hDC&, lpRect As RECT, ByVal hBrush&)

' RECT構造体の値を設定
Declare Function Api_SetRect& Lib "user32" Alias "SetRect" (lpRect As RECT, ByVal X1&, ByVal Y1&, ByVal X2&, ByVal Y2&)

' 論理オブジェクトを削除し、そのオブジェクトに関連付けられていたすべてのシステムリソースを解放
Declare Function Api_DeleteObject& Lib "gdi32" Alias "DeleteObject" (ByVal hObject&)

' 指定された幅・高さ・色形式を持つビットマップを作成
Declare Function Api_CreateBitmap& Lib "gdi32" Alias "CreateBitmap" (ByVal nWidth&, ByVal nHeight&, ByVal nPlanes&, ByVal nBitCount&, lpBits As Any)

' 指定されたウィンドウのデバイスコンテキストのハンドルを取得
Declare Function Api_GetDC& Lib "user32" Alias "GetDC" (ByVal hWnd&)

' デバイスコンテキストを解放
Declare Function Api_ReleaseDC& Lib "user32" Alias "ReleaseDC" (ByVal hWnd&, ByVal hDC&)

Var bBytes(8) As Integer

Var Shared Button1 As Object

Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var rc As RECT
    Var hDC As Long
    Var mBrush As Long
    Var hBitmap As Long
    Var Ret As Long

    hDC = Api_GetDC(GethWnd)

    For mBrush = 0 To 7 Step 2
        bBytes(mBrush) = 170          '170 = 10101010
        bBytes(mBrush + 1) = 85       ' 85 = 01010101
    Next

    'ビットマップを作成
    hBitmap = APi_CreateBitmap(8, 8, 1, 1, bBytes(1))

    'パターンブラシの作成
    mBrush = Api_CreatePatternBrush(hBitmap)
    Ret = Api_SetRect(rc, 0, 0, GetWidth, GetHeight)

    'フォームを塗りつぶす
    Ret = Api_FillRect(hDC, rc, mBrush)

    '解放
    Ret = Api_DeleteObject(mBrush)
    Ret = Api_DeleteObject(hBitmap)
    Ret = Api_ReleaseDC(hWnd, hDC)
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End