StretchBlt()関数


BOOL StretchBlt(
 HDC hdcDest,
 int nXOriginDest,
 int nYOriginDest,
 int nWidthDest,
 int nHeightDest,
 HDC hdcSrc,
 int nXOriginSrc,
 int nYOriginSrc,
 int nWidthSrc,
 int nHeightSrc,
 DWORD dwRop
);


ビットマップを転送元四角形から転送先四角形にコピーします。
このとき、必要に応じて、転送先四角形の寸法に合うように、ビットマップを拡大、縮小します。

hdcSrc転送先デバイスコンテキストへのハンドル。
xDest転送先四角形の左上隅のx座標。
yDest転送先四角形の左上隅のy座標。
nDestWidth転送先四角形の幅。
nDestHeight転送先四角形の高さ。
hdcSrc転送元デバイスコンテキストへのハンドル。
xSrc転送元四角形のx座標。
ySrc転送元四角形のy座標。
nSrcWidth転送元四角形の幅。
nSrcHeight転送元四角形の高さ。
dwRop実行するラスタ オペレーション。



StretchBlt( hdc, 50, 0, 250, 200, hdc, 0, 0, 32, 32, SRCCOPY );
StretchBlt( hdc, 50, 0, -250, -200, hdc, 0, 0, 32, 32, SRCCOPY );

Windows > グラフィック | comments (0) | trackbacks (0)

AlphaBlend()関数


BOOL AlphaBlend(
 HDC hdcDest,
 int nXOriginDest,
 int nYOriginDest,
 int nWidthDest,
 int nHeightDest,
 HDC hdcSrc,
 int nXOriginSrc,
 int nYOriginSrc,
 int nWidthSrc,
 int nHeightSrc,
 BLENDFUNCTION blendFunction
);


透明または半透明のピクセルがあるビットマップを表示します。

hdcSrc転送先デバイスコンテキストへのハンドル。
xDest転送先四角形の左上隅のx座標。
yDest転送先四角形の左上隅のy座標。
nDestWidth転送先四角形の幅。
nDestHeight転送先四角形の高さ。
hdcSrc転送元デバイスコンテキストへのハンドル。
xSrc転送元四角形のx座標。
ySrc転送元四角形のy座標。
nSrcWidth転送元四角形の幅。
nSrcHeight転送元四角形の高さ。
blendFunctionBLENDFUNCTION 構造体を指定します。



typedef struct _BLENDFUNCTION {
 BYTE BlendOp;
 BYTE BlendFlags;
 BYTE SourceConstantAlpha;
 BYTE AlphaFormat;
}BLENDFUNCTION, *PBLENDFUNCTION, *LPBLENDFUNCTION;


BlendOp現時点ではAC_SRC_OVER以外の操作は定義されていない為、常にこの値を指定します。
BlendFlags常に0を指定します。
SourceConstantAlphaコピー元の画像をどの程度の割合で透明にするかを表す値で、0だと完全な透明で255が完全な上書きとなる不透明度を表します。
AlphaFormat32ビットマップを生成し、ビットマップがアルファ値を持つ場合は指定しますが、RGBカラーで構成される通常のビットマップであれば0を指定します。



static BLENDFUNCTION blendfunc = { AC_SRC_OVER, 0, 32, 0 };

AlphaBlend( hmdc, 0, 0, bitmap.bmWidth, bitmap.bmHeight,
hbitdc, 0, 0, bitmap.bmWidth, bitmap.bmHeight, blendfunc );

Windows > グラフィック | comments (0) | trackbacks (0)

TransparentBlt()関数


BOOL TransparentBlt(
 HDC hdcDest,
 int nXOriginDest,
 int nYOriginDest,
 int nWidthDest,
 int hHeightDest,
 HDC hdcSrc,
 int nXOriginSrc,
 int nYOriginSrc,
 int nWidthSrc,
 int nHeightSrc,
 UINT crTransparent
);

TransparentBltでは透明さを考慮しています。
clrTransparentで示されるRGBカラーは転送で透明に表示されます。
反転することはできません。
開発環境の設定によってはmsimg32.libファイルをリンカにインポートする必要があります。

hdcSrc転送先デバイスコンテキストへのハンドル。
xDest転送先四角形の左上隅のx座標。
yDest転送先四角形の左上隅のy座標。
nDestWidth転送先四角形の幅。
nDestHeight転送先四角形の高さ。
hdcSrc転送元デバイスコンテキストへのハンドル。
xSrc転送元四角形のx座標。
ySrc転送元四角形のy座標。
nSrcWidth転送元四角形の幅。
nSrcHeight転送元四角形の高さ。
clrTransparent透明なビットマップとして扱うための転送元ビットマップのRGBカラー。



TransparentBlt( hmdc, x, y, bitmap.bmWidth, bitmap.bmHeight,
hbitdc, 0, 0, bitmap.bmWidth, bitmap.bmHeight, RGB( 0, 255, 0 ) );

Windows > グラフィック | comments (0) | trackbacks (0)