第2章 減 色 【リスト2-1】RGBの分解 #include "myWin.h" #define XST 420 #define YST 10 #define GWIDTH 400 #define GHIGHT 400 #define RED(X) (X & 0xFF) #define GREEN(X) ((X>>8) & 0xFF) #define BLUE(X) ((X>>16) & 0xFF) static HBITMAP hBM[2];static HDC hBuff[2]; static BITMAP bM[2]; void clearBitmap(int i){//ビットマップのクリア SelectObject(hBuff[i], GetStockObject(NULL_PEN)); PatBlt(hBuff[i], 0,0,GWIDTH,GHIGHT,BLACKNESS);//黒塗り } void createBitmap(HWND hw){//ビットマップの設定 HDC hdc=GetDC(hw); for(int i=0;i<2;i++){ hBM[i]=CreateCompatibleBitmap(hdc,GWIDTH,GHIGHT); hBuff[i]=CreateCompatibleDC(hdc); SelectObject(hBuff[i], hBM[i]); } } int pixel(int i, int j){//画像1からピクセルを取り出す return GetPixel(hBuff[1], i,j); } void setPixel(int i, int j, COLORREF C){//画像0にピクセルを設定する SetPixel(hBuff[0], i,j, C); } void uniRGB(int N){//N=1のとき赤, N=2のとき緑,それ以外青 COLORREF C; for(int i=0;i1) C=cutColor(C,N);   C=RGB(C,C,C);   setPixel(i,j, C);   }  }   【リスト2-4】グレースケール階調数変更のprocLButtonDownの変更  void procLButtonDown(HWND hw, WPARAM wp,LPARAM lp){   decreaseGrayScale(4);   InvalidateRect(hw,NULL,TRUE);  }