リスト3●カラー画像(24ビット)をモノクロ化する処理
モノクロ化の部分のみ示した
//R,G,B成分とモノクロ化した情報を管理するための構造体を定義
typedef struct _MyRGB
{
int R;
int G;
int B;
int Result;
} MyRGB;
void CChildView::OnEditBwC()
{
int nMaxX = m_Image.GetWidth(); //画像の横方向の画素数(幅)
int nMaxY = m_Image.GetHeight(); //画像の縦方向の画素数(高さ)
//画像の全画素数分の領域を確保
MyRGB* data
= (MyRGB*)malloc( sizeof(MyRGB) * nMaxX * nMaxY );
<画素を抜き出す処理・省略>
for( int y=0; y<nMaxY; y++ )
{
for( int x=0; x<nMaxX; x++ )
{
//モノクロ変換
data[y*nMaxX + x].Result = (data[y*nMaxX + x].R*3
+ data[y*nMaxX + x].G*6
+ data[y*nMaxX + x].B)/10;
}
}
<画像に反映する処理・省略>
}