私は現在、アプリケーションの即時ロード時に表示される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
しかし、画像全体のアルファ値を変更する方法がわかりませんか?
前もって感謝します!