[BMP]ビットマップ色の反転 | Assertion Failed!

[BMP]ビットマップ色の反転

ラスタオペレーションによる色の反転



Assertion Failed!-ビットマップ色の反転


■ラスタとは

ドットの集合のこと。

点の集合で構成されるイメージのことをラスタイメージと呼ぶ。


色の反転は簡単で、ラスタオペレーションを変更するだけでよい。



今回は、「反転」を表示するためのチェックボックスを追加して以下のように

「ビットマップの回転」 のコードを変更したのみ。



private:

  // 新規追加

  CButton m_chkInvert; // 反転チェックボックス(コントロール変数)


void CRotateBMPDlg::OnPaint()

{

  ・・・中略

  if(m_chkInvert.GetCheck())

  {

    pDC->BitBlt(0,0,m_dstWidth,m_dstHeight,&dcMem,0,0,NOTSRCCOPY);

  }

  else

  {

    pDC->BitBlt(0,0,m_dstWidth,m_dstHeight,&dcMem,0,0,SRCCOPY);

  }

  ・・・中略

}


// チェックボックスが押されたときのイベントハンドラ

void CRotateBMPDlg::OnBnClickedInvert()
{

  // TODO: ここにコントロール通知ハンドラ コードを追加します。
  InvalidateRect(NULL);
}



■ラスタオペレーションの種類

SRCCOPY 転送元から転送先へそのままコピー
SRCAND 転送元と転送先の色情報を AND演算によって合成する
SRCPAINT 転送元と転送先の色情報を OR演算によって合成する
SRCINVERT 転送元と転送先の色情報を XOR演算によって合成する
NOTSRCCOPY 転送元の色を NOT演算によって反転して、転送先にコピーする
NOTSRCERASE 転送元と転送先の色情報を、 OR演算によって合成し、更にその結果を NOT演算で反転する
BLACKNESS 転送先を黒く塗りつぶす
WHITENESS 転送先を白く塗りつぶす

Programming Place Plus より引用させていただきました。