SetDIBitsToDevice

SetDIBitsToDevice 関数は、DIB、JPEG、または PNG 画像のカラーデータを使用して、コピー先デバイスコンテキストに関連付けられたデバイス上の指定矩形内のピクセルを設定する。

SetDIBitsToDevice hdc, xDest, yDest, w, h, xSrc, ySrc, StartScan, cLines, lpvBits, lpbmi, ColorUse

hdc : [intptr] デバイスコンテキストへのハンドル。
xDest : [int] コピー先矩形の左上隅の x 座標(論理単位)。
yDest : [int] コピー先矩形の左上隅の y 座標(論理単位)。
w : [int] 画像の幅(論理単位)。
h : [int] 画像の高さ(論理単位)。
xSrc : [int] 画像の左下隅の x 座標(論理単位)。
ySrc : [int] 画像の左下隅の y 座標(論理単位)。
StartScan : [int] 画像内の開始スキャンライン。
cLines : [int] lpvBits パラメータが指す配列に含まれる DIB スキャンラインの数。
lpvBits : [intptr] バイト配列として格納されたカラーデータへのポインタ。詳細は後述の「解説」セクションを参照。
lpbmi : [var] DIB に関する情報を含む BITMAPINFO 構造体へのポインタ。
ColorUse : [int] BITMAPINFO 構造体の bmiColors メンバが明示的な赤、緑、青 (RGB) 値を含むか、パレットへのインデックスを含むかを示す。詳細は後述の「解説」セクションを参照。

(プラグイン / モジュール : gdi32.dll)

解説

SetDIBitsToDevice 関数は、DIB、JPEG、または PNG
画像のカラーデータを使用して、コピー先デバイスコンテキストに関連付けられたデバイス上の指定矩形内のピクセルを設定する。

[戻り値]
関数が成功した場合、戻り値は設定されたスキャンラインの数である。スキャンラインが 0 設定された場合(dwHeight が 0
のときなど)、あるいは関数が失敗した場合、関数は 0 を返す。ドライバが SetDIBitsToDevice に渡された JPEG または
PNG ファイル画像をサポートできない場合、関数は失敗して GDI_ERROR を返す。失敗した場合、アプリケーションは独自の JPEG
または PNG サポートにフォールバックして画像をビットマップに展開し、そのビットマップを SetDIBitsToDevice
に渡す必要がある。

[備考]
最適なビットマップ描画速度は、ビットマップビットがシステムパレットへのインデックスである場合に得られる。アプリケーションは
GetSystemPaletteEntries
関数を呼び出してシステムパレットの色とインデックスを取得できる。色とインデックスを取得した後、アプリケーションは DIB
を作成できる。システムパレットの詳細は Colors を参照。RLE 圧縮ビットマップを除いて、スキャンラインは DWORD
に整列しなければならない。ボトムアップ DIB の原点はビットマップの左下隅であり、トップダウン DIB の原点は左上隅である。大きな
DIB のビットをデバイスサーフェスに設定するために必要なメモリ量を減らすには、アプリケーションは SetDIBitsToDevice
を繰り返し呼び出し、毎回 lpvBits 配列にビットマップの異なる部分を配置することで、出力を帯状化できる。uStartScan と
cScanLines パラメータの値は、lpvBits 配列に含まれるビットマップの部分を識別する。SetDIBitsToDevice
関数は、フォアグラウンドでフルスクリーンの MS-DOS
セッションが実行されているときに、バックグラウンドで実行されているプロセスから呼び出された場合、エラーを返す。
(以下省略)

情報

プラグイン / モジュールgdi32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の gdi32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_gdi32_gen2.hs