Stretch Blt でビットマップイメージのサイズ変更方法

StretchBlt関数を使うとビットマップ画像のリサイズができます。StretchBlt関数を使う手順は次の通りです。

  1. ネイティブなビットマップとターゲットなビットマップのデバイス コンテキストのハンドルの作成
HDC hdcSrc = CreateCompatibleDC(NULL); // 创建源位图的设备上下文句柄
HDC hdcDest = CreateCompatibleDC(NULL); // 创建目标位图的设备上下文句柄
  1. ソースビマップとターゲットビットマップを作成します。
HBITMAP hBitmapSrc = (HBITMAP)LoadImage(NULL, "source.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); // 加载源位图
HBITMAP hBitmapDest = CreateCompatibleBitmap(hdcSrc, newWidth, newHeight); // 创建目标位图
  1. 元ビットマップを元デバイスコンテキストに選択し、ターゲットビットマップをターゲットデバイスコンテキストに選択します。
SelectObject(hdcSrc, hBitmapSrc); // 将源位图选入源设备上下文
SelectObject(hdcDest, hBitmapDest); // 将目标位图选入目标设备上下文
  1. ストレッチブライト関数を用いて、ビットマップのサイズ調整を行います。
StretchBlt(hdcDest, 0, 0, newWidth, newHeight, hdcSrc, 0, 0, oldWidth, oldHeight, SRCCOPY);
  1. 調整したターゲットビットマップを保存する。
SaveBitmap("destination.bmp", hBitmapDest);
  1. リソースを解放する。
DeleteObject(hBitmapSrc); // 删除源位图
DeleteObject(hBitmapDest); // 删除目标位图
DeleteDC(hdcSrc); // 删除源设备上下文
DeleteDC(hdcDest); // 删除目标设备上下文

上記のコードでは、「source.bmp」は元となるビットマップファイル名、「newWidth」と「newHeight」はターゲットのビットマップ幅と高さ、「oldWidth」と「oldHeight」は元となるビットマップ幅と高さに注意してください。「SaveBitmap」関数はビットマップを保存するためにカスタマイズされた関数です。これはニーズに応じて変更できます。

bannerAds