2

どういうわけか、WPFアプリケーションウィンドウのガラス/透明度を無効にできますか?

注:Aeroを無効にしたくはありません。ガラス/透明度だけを無効にし、システム全体ではなく、ウィンドウを無効にします。

このようなもの(Enable Transparencyチェックボックス)ですが、私のアプリケーション用です:

ここに画像の説明を入力してください

これは可能ですか?

4

1 に答える 1

1

これが遅れていることは知っていますが、他の人が探している場合は、次を使用できます。これは「Aero を無効にする」と見なされる可能性があるため、質問に厳密には答えないかもしれませんが、クライアント ウィンドウのみの透過性を無効にします。

[DllImport("DwmApi.dll")]
public static extern int DwmSetWindowAttribute(IntPtr hwnd, int dwAttribute, ref int pvAttribute, int cbAttribute);

private const int DWMWA_NCRENDERING_POLICY = 2;
private const int DWMNCRP_DISABLED = 1;

private void OnLoaded(object sender, RoutedEventArgs e)
{
    var mainWindowHandle = new WindowInteropHelper(this).Handle;
    var policyParameter = DWMNCRP_DISABLED;

    DwmSetWindowAttribute(mainWindowHandle, DWMWA_NCRENDERING_POLICY, ref policyParameter, sizeof(int));
}

詳細については、DwmSetWindowAttribute 関数を参照してください。

于 2015-12-10T20:59:25.693 に答える