WindowsにおけるBitBlt関数の使用方法

BitBlt関数は、あるデバイスの画像を別のデバイスにコピーするために使用する、Windows APIによって提供される画像処理関数です。関数の宣言は以下のとおりです。

BOOL BitBlt(
    HDC hdcDest,      // 目标设备的句柄
    int nXDest,       // 目标矩形左上角的X坐标
    int nYDest,       // 目标矩形左上角的Y坐标
    int nWidth,       // 目标矩形的宽度
    int nHeight,      // 目标矩形的高度
    HDC hdcSrc,       // 源设备的句柄
    int nXSrc,        // 源矩形左上角的X坐标
    int nYSrc,        // 源矩形左上角的Y坐标
    DWORD dwRop       // 光栅操作代码
);

以下に BitBlt 関数を使用するサンプルコードを示します。

HDC hdcSrc, hdcDest;
HBITMAP hBitmapSrc, hBitmapDest;
BITMAP bitmap;

// 创建源和目标设备上下文
hdcSrc = CreateCompatibleDC(NULL);
hdcDest = CreateCompatibleDC(NULL);

// 创建源和目标位图
hBitmapSrc = (HBITMAP)LoadImage(NULL, L"source.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
GetObject(hBitmapSrc, sizeof(BITMAP), &bitmap);
hBitmapDest = CreateCompatibleBitmap(hdcDest, bitmap.bmWidth, bitmap.bmHeight);

// 将源位图选入源设备上下文
SelectObject(hdcSrc, hBitmapSrc);
// 将目标位图选入目标设备上下文
SelectObject(hdcDest, hBitmapDest);

// 使用BitBlt函数将源位图拷贝到目标位图
BitBlt(hdcDest, 0, 0, bitmap.bmWidth, bitmap.bmHeight, hdcSrc, 0, 0, SRCCOPY);

// 保存目标位图到文件
SaveBitmapToFile(hBitmapDest, L"result.bmp");

// 释放资源
DeleteObject(hBitmapSrc);
DeleteObject(hBitmapDest);
DeleteDC(hdcSrc);
DeleteDC(hdcDest);

上のサンプルコードでは、ソースビットマップはファイルから読み込まれますが、実際の実装では自由にできます。最後に、BitBlt関数を呼び出してソースビットマップをターゲットビットマップにコピーします。コピーした後は、SaveBitmapToFile関数を呼び出してターゲットビットマップをファイルに保存できます。

bannerAds