1

を使用してウィンドウを表示していますUpdateLayeredWindowが、トランジションアニメーションを追加したいと思います。AnimateWindowスライド効果またはロール効果を使用すると機能します(ちらつきはありますが)。ただし、AW_BLENDフェード効果を生成するために使用しようとすると、アニメーション後(ピクセルごとおよび画像全体)の半透明性が失われるだけでなく、デフォルトのウィンドウ境界線も表示されます。境界線が表示されないようにする方法はありますか?

4

2 に答える 2

2

を使用しているのでUpdateLayeredWindow動作しSetLayeredWindowAttributesません。ここの図は非常に役に立ちました。代わりに、構造体のメンバーUpdateLayeredWindowを減らしながらループを呼び出す必要があります。実際、構造体へのポインター、レイヤードウィンドウへのハンドル、およびフラグは、アルファが変更されているすべてである場合に渡す必要がある唯一のものです。SourceConstantAlphaBLENDFUNCTIONBLENDFUNCTIONUpdateLayeredWindow

于 2009-07-29T23:12:24.007 に答える
0

(あなたが説明している複雑さなしに)ウィンドウをうまくフェードアップ/フェードダウンするために私が見つけた唯一の方法は、最初にWS_EX_LAYERED拡張スタイルでウィンドウを作成することです。次に、次のような呼び出しによってウィンドウを徐々にフェードさせるタイマー(30ms)を開始します。

SetLayeredWindowAttributes(0, 
                          (BYTE)(m_nAnimationCount * WINDOW_ALPHA), 
                          LWA_ALPHA);

ここで、WINDOW_ALPHAは23(最もよく見えるように見えます)であり、m_nAnimationCount0から10(またはフェードダウンの場合は10から0)までのカウントです。

あなたがこれを行うためのより良い方法を発見した場合、私はそれを見つけることに興味があります。

于 2009-07-28T22:45:07.567 に答える