[BMP]ビットマップ色の反転
ラスタオペレーションによる色の反転
■ラスタとは
ドットの集合のこと。
点の集合で構成されるイメージのことをラスタイメージと呼ぶ。
色の反転は簡単で、ラスタオペレーションを変更するだけでよい。
今回は、「反転」を表示するためのチェックボックスを追加して以下のように
「ビットマップの回転」 のコードを変更したのみ。
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 | 転送先を白く塗りつぶす |