MFCはAPI関数GdiAlphaBlendを用いて半透明コントロールを描画する
サンプルコードは次のとおりです.
インタフェースの効果は次のとおりです.
if (m_hBrushBackground)
{
HDC back;
CRect rcx = rcc;
back = ::CreateCompatibleDC(dc);
HBITMAP bmpx;
bmpx = ::CreateCompatibleBitmap(dc, rcx.Width(), rcx.Height());
HBITMAP ob = (HBITMAP)::SelectObject(back, bmpx);
POINT pt2;
::SetBrushOrgEx(back, m_ptBackBrushOrig.x, m_ptBackBrushOrig.y, &pt2);
::FillRect(back, &rcc, m_hBrushBackground);
BLENDFUNCTION bf;
bf.BlendOp = AC_SRC_OVER;
bf.BlendFlags = 0;
bf.SourceConstantAlpha = 80;
bf.AlphaFormat = 0;
GdiAlphaBlend(memDC, 0, 0, rcx.Width(), rcx.Height(),
back, 0, 0, rcx.Width(), rcx.Height(), bf);
::SelectObject(back, ob);
::DeleteObject(bmpx);
::DeleteDC(back);
}
インタフェースの効果は次のとおりです.