ゲームのように、きれいにフェードアウトしたいのですが、どうすればいいですか?
よろしくお願いします。
#include<atlimage.h>
class Picture
{
// ここに、いろいろな変数、関数があります
// 描画すると、ちらつきます
void Draw(CDC *pDC)
{
// (CImage)image,(CDC)*imageDC,SpDCは、クラスの宣言、この関数の外
// (CBitmap)cbmp,*oldcbmp 同上
// (CBrush)Brush 同上
imageDC=CDC::FromHandle(image.GetDC());
BLENDFUNCTION bf;
bf.BlendOp=AC_SRC_OVER;
bf.AlphaFormat=0 ;
bf.BlendFlags=0;
bf.SourceConstantAlpha=(BYTE)GetImageAlpha(); // 255~徐々に減少
SpDC.FillRect(CRect(0,0,GetImageSize().cx,GetImageSize().cy),&Brush);// CSize GetImageSize(){return imageSize;} イメージの高横
SpDC.AlphaBlend(0,0,GetImageSize().cx,GetImageSize().cy,imageDC,0,0,GetImageSize().cx,GetImageSize().cy,bf);
pDC->BitBlt(0,0,GetImageSize().cx,GetImageSize().cy,&SpDC,0,0,SRCCOPY);
image.ReleaseDC();
// デストラクタにて、SpDC.SelectObject(oldcbmp);cbmp.DeleteObject();SpDC.DeleteDC();Brush.DeleteObject();
}
};
//補足ですが、SetTimer()でInvalidate()しています。
お礼
回答ありがとうございます。 BOOL CFadeOutView::OnEraseBkgnd(CDC* pDC) { // TODO : ここにメッセージ ハンドラ コードを追加するか、既定の処理を呼び出します。 return 0; } としましたら、きれいに描画されました。 後は、何とかがんばって見ます。 本当にありがとうございました。