0

私は現在、アプリケーションの即時ロード時に表示されるCView単一の集中型で構成される を持っています。CImage

単に表示されるのではなく、起動時にフェードインすることで、少しきれいにしたいですCImage(すでにスプラッシュスクリーンがあるので、アニメーション化する方法を求めていませんCWnd)。

CView::OnDraw画像を表示するために、次のようにメソッドをオーバーライドしました。

void CWelcomeView::OnDraw( _In_ CDC* pDC ) 
{
    CView::OnDraw( pDC );

    static CImage backgroundImage;
    static bool bImageLoaded = false;

    if( !bImageLoaded )
    {
        backgroundImage.LoadFromResource( AfxGetInstanceHandle(), IDB_WELCOMESCREEN );

        bImageLoaded = true;
    }

    CRect clientRect;
    GetClientRect( &clientRect );

    // The detination rectangle should be the same size as the image:
    POINT pointTopLeft = {(clientRect.Width()-backgroundImage.GetWidth())/2, (clientRect.Height()-backgroundImage.GetHeight())/2};
    CRect destRect( pointTopLeft, CSize( backgroundImage.GetWidth(), backgroundImage.GetHeight() ) );

    // Draw the image in the right space:
    backgroundImage.Draw( pDC->GetSafeHdc(), destRect );
}

今、作成時にフェードインする方法が完全にはわかりません。私の現在の行動計画は、に基づいてタイマーを作成し、現在の時点とクロックが開始された時間 (メンバー変数として保持します) との差に基づいてstd::chrono::steady_clockのアルファ値を変更することです。CImage

しかし、画像全体のアルファ値を変更する方法がわかりませんか?

前もって感謝します!

4

1 に答える 1