2012-05-20 10 views
2

Могу ли я как-то отключить стекло/прозрачность для моего окна приложения WPF?Отключение Aero glass/transparent для окна WPF?

Примечание: Я не хочу отключать Aero, просто стекло/прозрачность и для моего окна, а не для всей системы.

Что-то вроде это (Enable Transparency флажок), но только для моего приложения:

enter image description here

Возможно ли это?

+1

Это просто: просто переключитесь на [Windows 8] (http://blogs.msdn.com/b/b8/archive/2012/05/18/creating-the-windows-8-user-experience.aspx) и вся прозрачность исчезла. ;-) – dtb

+0

@dtb Я знаю, это печально, но мне нужен реальный ответ, хотя :) – Tower

+1

Pinvoke требуется: http://msdn.microsoft.com/en-us/library/windows/desktop/aa969524%28v=vs .85% 29.aspx –

ответ

0

Я знаю, что это поздно, но для других людей вы можете использовать следующее. Возможно, это не будет строго отвечать на вопрос, поскольку это можно считать «отключением 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 function.