Текст TextBox становится прозрачным при использовании Aero Blur в WinFormsC#

Место общения программистов C#
Anonymous
Текст TextBox становится прозрачным при использовании Aero Blur в WinForms

Сообщение Anonymous »

Недавно я узнал, как заставить Aero Blur работать в формах без полей в Windows Vista, 7 и 10. Я добиваюсь этого, используя следующую функцию:

Код: Выделить всё

private void UpdateAeroBlur() {
if (!SupportsAeroBlur) //do not do anything if XP or older
return;
else if (useSetWindowComposition) { //true if SetWindowCompositionAttribute function
//exists in user32.dll
AccentPolicy accent = new AccentPolicy();
accent.AccentState = enableAeroBlur ? AccentState.ENABLE_BLURBEHIND : AccentState.DISABLED;
WindowCompositionAttributeData data = new WindowCompositionAttributeData();
data.Attribute = DwmWindowAttribute.ACCENT_POLICY;
data.SizeOfData = AccentPolicy.Size;
unsafe
{
data.Data = new IntPtr(&accent);
}
NativeApi.SetWindowCompositionAttribute(Handle, ref data);
}
DWM_BLURBEHIND style = new DWM_BLURBEHIND() {
dwFlags = DWM_BB.Enable,
fEnable = true
};
NativeApi.DwmEnableBlurBehindWindow(Handle, ref style);
}
И ему удается сделать границу моей пользовательской формы полупрозрачной! Однако я получаю раздражающий побочный эффект.

Посмотрите на это:

Изображение


Текст в элементах управления TextBox стал прозрачным, а текст на кнопках, нарисованный с использованием сглаженного текста GDI+, стал прозрачным. не прозрачно.

Я попробовал вызвать SetLayeredWindowAttributes и попробовал LWA_ALPHA с bAlpha = 255, а затем попробовал LWA_COLORKEY с обнуленным COLORREF, но проблема осталась.

Как сделать текст в элементах управления TextBox непрозрачным, оставив границу полупрозрачной?>

Подробнее здесь: https://stackoverflow.com/questions/467 ... n-winforms

Вернуться в «C#»