タイルペイント(T) <TOP>
BitBlt
コピー元からコピー先のデバイスコンテキストへ、指定された長方形内の各ピクセルの色データをコピー
LoadImage 画像ファイルの読み込み
CreateCompatibleDC
デバイスコンテキストを作成
DeleteDC
指定されたデバイスコンテキストを削除
SelectObject 指定されたデバイスコンテキストのオブジェクトを選択
DeleteObject 論理オブジェクトを削除し、そのオブジェクトに関連付けられていたすべてのシステムリソースを解放
GetObject オブジェクト取得
GetDC
デバイスコンテキストのハンドルを取得
ReleaseDC デバイスコンテキストを解放
'================================================================ '= タイルペイント(U) '= (TilePaint2.bas) '================================================================ #include "Windows.bi" Type BITMAP bmType As Long bmWidth As Long bmHeight As Long bmWidthBytes As Long bmPlanes As Integer bmBitsPixel As Integer bmBits As Long End Type #define IMAGE_BITMAP 0 'ビットマップ #define LR_LOADFROMFILE &H10 '外部ファイルからロードする #define SRCCOPY &HCC0020 'そのまま転送 ' 画像ファイルの読み込み Declare Function Api_LoadImage& Lib "user32" Alias "LoadImageA" (ByVal hInst&, ByVal lpszName$, ByVal uType&, ByVal cxDesired&, ByVal cyDesired&, ByVal fuLoad&) ' ビットブロック転送を行う。コピー元からコピー先のデバイスコンテキストへ、指定された長方形内の各ピクセルの色データをコピー Declare Function Api_BitBlt& Lib "gdi32" Alias "BitBlt" (ByVal hDestDC&, ByVal X&, ByVal Y&, ByVal nWidth&, ByVal nHeight&, ByVal hSrcDC&, ByVal xSrc&, ByVal ySrc&, ByVal dwRop&) ' 指定されたデバイスコンテキストに関連するデバイスと互換性のあるメモリデバイスコンテキストを作成 Declare Function Api_CreateCompatibleDC& Lib "gdi32" Alias "CreateCompatibleDC" (ByVal hDC&) ' 指定されたデバイスコンテキストを削除 Declare Function Api_DeleteDC& Lib "gdi32" Alias "DeleteDC" (ByVal hDC&) ' 指定されたデバイスコンテキストのオブジェクトを選択 Declare Function Api_SelectObject& Lib "gdi32" Alias "SelectObject" (ByVal hDC&, ByVal hObject&) ' 論理オブジェクトを削除し、そのオブジェクトに関連付けられていたすべてのシステムリソースを解放 Declare Function Api_DeleteObject& Lib "gdi32" Alias "DeleteObject" (ByVal hObject&) ' オブジェクト取得 Declare Function Api_GetObject& Lib "gdi32" Alias "GetObjectA" (ByVal hObject&, ByVal nCount&, lpObject As Any) ' 指定されたウィンドウのクライアント領域または画面全体を表すディスプレイデバイスコンテキストのハンドルを取得 Declare Function Api_GetDC& Lib "user32" Alias "GetDC" (ByVal hWnd&) ' デバイスコンテキストを解放 Declare Function Api_ReleaseDC& Lib "user32" Alias "ReleaseDC" (ByVal hWnd&, ByVal hDC&) '================================================================ '= '================================================================ Declare Sub MainForm_Resize edecl () Sub MainForm_Resize() Var hDC As Long 'MainFormのデバイスコンテキスト Var Success As Long 'API戻り値 Var bmp As BITMAP 'BITMAP構造体 Var srcDC As Long 'ソースのデバイスコンテキスト Var srcBmp As Long 'ソースビットマップ Var hSrcBmp As Long 'ソースビットマップのハンドル Var y As Long Var x As Long Var Ret As Long hDC = Api_GetDC(GethWnd) srcBmp = Api_LoadImage(0, "flower.bmp", IMAGEBITMAP, 0, 0, LR_LOADFROMFILE) Ret = Api_GetObject(srcBmp, Len(bmp), bmp) srcDC = Api_CreateCompatibleDC(hDC) hSrcBmp = Api_SelectObject(srcDC, srcBmp) For y = 0 To GetHeight Step bmp.bmHeight For x = 0 To GetWidth Step bmp.bmWidth Ret = Api_BitBlt(hDC, x, y, bmp.bmWidth, bmp.bmHeight, srcDC, 0, 0, &HCC0020) Next x Next y Ret = Api_DeleteObject(hSrcBmp) Ret = Api_DeleteDC(srcDC) Ret = Api_ReleaseDC(GethWnd, hDC) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End