次のコードは、閉じるときにアプリケーションをフェードするものです。
procedure TfrmMain.btnClose1Click(Sender: TObject);
var
i : Integer;
begin
for i := 255 downto 0 do begin
frmMain.AlphaBlendValue := i;
application.ProcessMessages;
end;
Close;
end;
Windows のパフォーマンスを [Windows に選択させる] に設定した場合</p>
- 上記のコードを使用して Delphi アプリを閉じると、フェードはほぼ瞬時に行われます (せいぜい 1/4 秒で、まばたきするとトランジションを見逃してしまいます)。
パフォーマンス オプションを「最高のパフォーマンスに調整する」に設定した場合</p>
- 同じアプリを終了すると、フェードに 12 秒以上かかります。
- 同じコードを使用して AlphaBlendValue の変更をコメント アウトすると、遅延が解消されます。
Delphi 2010 と DelphiXE2 の両方でこれをテストしましたが、結果は同じです。これは Windows 7 Ultimate 64 ビットでテストされており、違いが生じる場合があります。
控えめに言っても、この振る舞いは私を当惑させます。
- フォームの Alpha プロパティは GPU によって処理されるため、CPU パフォーマンスの最大化を目標とする Windows パフォーマンス設定の影響を受けないと考えました。
これに関する限り、これが Windows 7 のバグなのか、Delphi のバグなのか、単に私の知識不足なのかはわかりません。
修正に関しては...アプリでアルファフェード効果を無効にできるように、Windowsががらくたグラフィックス/最大パフォーマンスモードで実行されているかどうかを確認する方法はありますか?
わかりやすくするために編集: フェードを修正したいのですが、本当に探しているのは、Windows のパフォーマンス設定が何であるかを判断する方法です。
特定の Windows 設定を決定する方法を探しています。Windows パフォーマンス オプションに移動すると、3 つのタブがあります。最初のタブ「視覚効果」には、3 つの既定のオプションと「カスタム」の 4 番目のオプションがあります。最低限、選択されたオプションが「最高のパフォーマンスに調整する」であるかどうかを判断しようとしています。このタブの設定がさらに優れているかどうかを判断できるかどうか.
どんな助けにも感謝します。