画像の開始ポインタを取得します。
書式
パラメータ
戻り値
画像描画領域の開始位置(ポインタ)が返されます。
解説
画像の描画開始位置が返されます。これにより、直接画像をポインタ操作することができます。
1ピクセルは各1バイトごとのRGBA情報を持ち、4バイトで構成されます。

各RGBA要素は、0から255の間の整数になります(unsigned char型)。
1ライン分のバイト数は画像サイズ×4(「GetLineBytes」の戻り値)となります。
※ただし、現在はA(α値)は未使用です。
注意!!
画像へのポインタを直接操作する、ということは、画像のメモリの外にアクセスしてしまった場合、アプリケーション(またはOS)をフリーズさせる原因にもなりかねます。
十分に注意を払ってご使用ください。
|
例
指定の座標(x,y)にRGB=(rr,gg,bb)の点を打つ例です。
void MySetPixel(CPImage *lpImage,int x,int y,int rr,int gg,int bb)
{
int width,height;
int scanLines;
unsigned char *lpPos;
if(!lpImage) return;
//イメージの幅と高さを取得
width=lpImage->GetImageWidth();
height=lpImage->GetImageHeight();
if(x<0 || x>=width || y<0 || y>=height) return;
//イメージの開始ポインタを取得
lpPos=(unsigned char *)(lpImage->GetPointer());
if(!lpPos) return;
//1ライン分のバイト数を取得
scanLines=lpImage->GetLineBytes();
//(x,y)の位置へ、ポインタを移動
lpPos+=(x << 2) + scanLines*y;
//RGB値の書き込み
*lpPos = (unsigned char)rr;
*(lpPos+1) = (unsigned char)gg;
*(lpPos+2) = (unsigned char)bb;
}
ビルド時に必要なファイル
ライブラリ
| :CPartsLib.lib (Macintoshの場合は、CPartsCW.a)
|
ヘッダ
| :CPImage.h
|
関連リンク
CPImageクラス
CPImage::GetLineBytes