Я пытаюсь создать полей и без изменяемых окна WPF Aero стекла с использованием DwmEnableBlurBehindWindow
метода из DmwAPI
. Однако по какой-то странной причине цвет стекла этого окна выглядит так, как если бы окно было не в фокусе. Как вы можете видеть на следующих трех изображениях, обычные окна с границами (, например, рис. 1 и 2) работают просто отлично и реагируют как ожидалось (темно-синий в фокусе, беловатый, когда не в фокусе (= неактивен)).стеклянного окна WPF, без границы и не изменяют размеров вне фокуса
без границ окна с изменением размеров животных, показывает такое же поведение:
без изменения размера полого окна, однако всегда будет выглядеть, как будто это из фокус (как вы можете видеть в последнем рисунке 3), когда он активен и неактивен. Она всегда выглядит беловатый:
Это пример кода, как я установить стиль стекла:
public MainWindow()
{
InitializeComponent();
WindowStyle = WindowStyle.None;
ResizeMode = ResizeMode.NoResize;
Height = 200;
Background = Brushes.Transparent;
Loaded += MainWindow_Loaded;
}
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
var windowInteropHelper = new WindowInteropHelper(this);
var handle = windowInteropHelper.Handle;
var mainWindowSrc = HwndSource.FromHwnd(handle);
if (mainWindowSrc != null)
if (mainWindowSrc.CompositionTarget != null)
mainWindowSrc.CompositionTarget.BackgroundColor = Color.FromArgb(0, 0, 0, 0);
var glassParams = new DwmApi.DwmBlurbehind
{
dwFlags = DwmApi.DwmBlurbehind.DWM_BB_ENABLE,
fEnable = true,
hRegionBlur = IntPtr.Zero
};
IntPtr dis = new IntPtr(2);
DwmApi.DwmSetWindowAttribute(mainWindowSrc.Handle,
DwmApi.DwmWindowAttribute.DWMWA_LAST,
dis,
sizeof(uint));
DwmApi.DwmEnableBlurBehindWindow(
handle,
glassParams
);
}
Я попытался сфокусировать окно, но это, похоже, не влияет на поведение , Любые идеи или указатели на то, как это решить?
Я попытался это раньше, и попробовал еще раз сейчас, но не повезло, к сожалению: 'IntPtr Дис = новый IntPtr (2); DwmApi.DwmSetWindowAttribute (mainWindowSrc.Handle, DwmApi.DwmWindowAttribute.DWMWA_NCRENDERING_POLICY, Дис, SizeOf (UINT)); ' – dsfgsho
Будет нужно видеть больше кода, как я могу воспроизвести проблему именно так, как вы описали и исправить его с помощью кода выше. Возможно, мы сможем переключиться на обсуждение комнаты. Я в сети почти все рабочие дни (GMT + 1) в комнате WPF – Maverik
Вот полный пример кода с использованием окна WPF: http://pastebin.com/TrAe1DPd – dsfgsho