タイルペイント(T) <TOP>
BitBlt コピー元からコピー先のデバイスコンテキストへ、指定された長方形内の各ピクセルの色データをコピー
GetDC
デバイスコンテキストのハンドルを取得
ReleaseDC デバイスコンテキストを解放
'================================================================ '= タイルペイント
'= (TilePaint.bas) '================================================================ #include "Windows.bi" ' ビットブロック転送を行う。コピー元からコピー先のデバイスコンテキストへ、指定された長方形内の各ピクセルの色データをコピー 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_GetDC& Lib "user32" Alias "GetDC" (ByVal hWnd&) ' デバイスコンテキストを解放 Declare Function Api_ReleaseDC& Lib "user32" Alias "ReleaseDC" (ByVal hWnd&, ByVal hDC&) #define SRCCOPY &HCC0020 'そのまま転送 Var Shared Bitmap As Object Var Shared Picture1 As Object Picture1.Attach GetDlgItem("Picture1") BitmapObject Bitmap Var Shared hDC As Long Var Shared hDC2 As Long '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() Bitmap.LoadFile "bike1.Bmp" Picture1.StretchBitmap Bitmap, 0, 0, Picture1.GetWidth, Picture1.GetHeight Bitmap.DeleteObject hDC = Api_GetDC(GethWnd) hDC2 = Api_GetDC(Picture1.GethWnd) End Sub '================================================================ '= '================================================================ Declare Sub MainForm_Resize edecl () Sub MainForm_Resize() Var y As Long Var x As Long Var Ret As Long Cls For y = 0 To GetHeight Step Picture1.GetHeight For x = 0 To GetWidth Step Picture1.GetWidth Ret = Api_BitBlt(hDC, x, y, Picture1.GetWidth, Picture1.GetHeight, hDC2, 0, 0, SRCCOPY) Next Next End Sub '================================================================ '= '================================================================ Declare Sub MainForm_QueryClose edecl () Sub MainForm_QueryClose() Ret = Api_ReleaseDC(GethWnd, hDC) Ret = Api_ReleaseDC(Picture1.GethWnd, hDC2) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End