page navigate uwp dwm acrylic-material fluent-design

uwp - navigate - Material acrílico en la aplicación win32



uwp navigate to page (2)

Acabo de encontrar este proyecto que trae acrílico a WPF: https://github.com/bbougot/AcrylicWPF

Parece que tu hipótesis era buena. Utiliza SetWindowsCompositionAttribute y aplica un sombreador en él.

Microsoft reveló recientemente su nuevo lenguaje de diseño "fluido", y una parte de él es el material "acrílico" . Este efecto hace que un elemento sea transparente y difumina el fondo. Se puede aplicar a una ventana, de modo que las partes de las ventanas subyacentes brillen (acrílico de fondo) o a elementos individuales en la ventana, de modo que otros controles brillen (acrílico integrado en la aplicación). Es conceptual y visualmente muy similar a la vitalidad en macOS.

Está implementado como un Pincel especial en XAML, pero me pregunto si hay una forma de usarlo (acrílico de fondo) en una aplicación Win32 normal. El efecto es muy similar al desenfoque aplicado al menú de inicio y a la barra de tareas (que maneja SetWindowCompositionAttribute ), lo que me lleva a pensar que podría ser activable mediante un indicador similar.

Una pregunta: ¿Me pregunto cómo se implementa? ¿Es solo una bandera que puede establecer en una ventana y luego aplicar en el DWM (como SetWindowCompositionAttribute, o como Aero Glass en Vista y 7)? ¿O tiene UWP algún tipo de control sobre el DWM y puede configurar sombreadores para controlar cómo se representa? Bajo Vista, cuando DWM se introdujo por primera vez, tenía un código común con WPF, y en realidad compartía los búferes (de tipo DirectX) y el gráfico de escena, por lo que trucos como ese eran posibles. La utilidad del magificador podría magnificar las aplicaciones WPF con nitidez como las imágenes vectoriales , pero esa funcionalidad se perdió más adelante. La forma en que MS presenta "acrílico" en esa página (como diferentes capas, e implementado como un pincel XAML), me lleva a pensar que de alguna manera tendrías que inyectar capas en el scenegraph de DWM, lo que haría más difícil o imposible su uso de Win32.


Sus efectos se crean utilizando las API de composición XAML de nivel inferior, que utiliza el Compositor XAML de UWP, por lo que diría que dudo que pueda lograr esto de forma nativa en Win32. Si realmente lo desea, puede llevar su aplicación a través de Desktop Bridge y convertir la interfaz de usuario, o imitar los efectos con la tecnología disponible en la actualidad. (Los navegadores como Chrome, se las arreglan para usar, agregan Window Chrome a su aplicación, aunque no estoy seguro de cómo lograr el efecto acrílico).