Текст 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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