Estoy buscando una manera de crear un efecto "se verá bien" para una aplicación de WPF a pantalla completa en la que estoy trabajando: un efecto de "brillo de pantalla" que se mueve o se mueve toda la pantalla para emitir una experiencia de visualización brillante. Estoy pensando en crear un rectángulo grande con un fondo degradado y transparente resaltado, que podría animarse en la pantalla. ¿Alguna idea de cómo se puede hacer esto de manera efectiva en XAML?Efecto de brillo de pantalla en WPF o Silverlight
Respuesta
Se me ocurrió una solución que se ve bastante bien. Algunos XAML muestra que se apuntó en el SP1 Blend 2.0 se ve así:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="ScreenGlintApplication.Window1"
x:Name="Window"
Title="Window1"
Width="500" Height="250" Background="#FF000000" Foreground="#FF3EE229" >
<Grid x:Name="LayoutRoot">
<TextBlock TextWrapping="Wrap" FontSize="40" >
<Run Text="This is some sample text to have something to work with. Have a nice day! /Johan"/>
</TextBlock>
<Canvas Panel.ZIndex="99" >
<Rectangle x:Name="ScreenGlintRect"
Width="{Binding Path=ActualWidth, ElementName=Window, Mode=Default}"
Height="{Binding Path=ActualHeight, ElementName=Window, Mode=Default}"
Opacity="0.4" >
<Rectangle.Triggers>
<EventTrigger RoutedEvent="Rectangle.Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="ScreenGlintRect"
Storyboard.TargetProperty="(Canvas.Left)"
From="-500" To="1000" Duration="0:0:2" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Rectangle.Triggers>
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0,1" EndPoint="1,1">
<GradientStop Color="Transparent" Offset="0.0" />
<GradientStop x:Name="GlintColor" Color="LightGreen" Offset="0.50" />
<GradientStop Color="Transparent" Offset="1" />
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
</Canvas>
</Grid>
</Window>
Una opción es hacer esto en el código subyacente, que es bastante interesante si desea tener un control granular de la animación. Por ejemplo:
ScreenGlintRect.Width = Width;
ScreenGlintRect.Height = Height;
var animation = new DoubleAnimation
{
Duration = new Duration(TimeSpan.FromSeconds(2)),
From = (-Width),
To = Width * 2
};
ScreenGlintRect.BeginAnimation(Canvas.LeftProperty, animation);
Este es el código que estoy usando y se ve lo suficientemente bueno para mí. Si obtuviste aceleración de HW podrías probar y agregarle un poco de desenfoque. Puede que tenga que ajustar el código y ocultar/mostrar el rectángulo, pero básicamente esto es todo.
Es fácil colocar cualquier panel transparente "en la parte superior" de la rejilla principal y animar un elemento colocado en el panel. Para colocar un panel "en la parte superior", simplemente colóquelo al final de la jerarquía XAML, después de cualquier otro elemento. Alternativamente, puede usar la propiedad "ZIndex".
Laurent
Puede poner un panel transparente en la parte superior como LBugnion dijo, pero no se olvide que hay muchas maneras de hacer esto:
- cambiar la visibilidad del panel en Oculto.
- cambiar la opacidad a 0.
- Cambiar el alfa del color a 0.
Si sólo cambia el Alfa todavía es se puede hacer clic, incluso cuando usted no ve el color.
Fuera de tema pero: intente que el efecto sea sutil y tal vez tenga una opción de encendido/apagado.
Se adjunta a this article en las barras de progreso se muestra el código que tiene una barra de progreso de estilo de Vista que tiene el brillo de estilo de Vista. Utiliza un borde y un pincel y un convertidor para crear animaciones. No puedo decir que entiendo totalmente todo allí, pero funciona muy bien. Debe ser fácil de copiar a sus necesidades.
- 1. Efecto de brillo interior en WPF
- 2. Silverlight 2: ¿efecto de resplandor de texto?
- 3. Efecto de brillo exterior en el borde
- 4. Silverlight o WPF?
- 5. Efecto de brillo interior del botón
- 6. Valor de brillo de pantalla en Android
- 7. efecto de brillo de animación de Android en imageview
- 8. captura de pantalla C# WPF con efecto SnippingTool
- 9. Eliminación del efecto brillo de los botones en un UINavigationBar
- 10. pregunta de efecto de brillo de interfaz de iPhone
- 11. Cambiar brillo de la pantalla (C#)
- 12. C# configuración brillo de pantalla Windows 7
- 13. Brillo de pantalla de Android ¿Valor máximo?
- 14. Efecto texto de Starwars en WPF
- 15. WPF admite pantalla táctil o multi-táctil?
- 16. Resolución de pantalla Silverlight
- 17. Cómo dibujar un borde iluminado (efecto de brillo exterior)?
- 18. Emulación de terminal VT100 en Windows WPF o Silverlight
- 19. Actualizar Brillo de pantalla en Android después de cambiarlo programáticamente
- 20. cambiando el brillo de la pantalla programáticamente en android
- 21. Efecto de la actualización de pantalla
- 22. mejor manera de conseguir un teléfono de Windows 7 efecto de brillo
- 23. Extensiones de marcado en WPF/Silverlight
- 24. Eliminación del efecto Brillo/Brillo en el iPhone a través de UIPrerenderedIcon no funciona en el dispositivo
- 25. Futuras aplicaciones LOB de escritorio: WPF, Silverlight o ... ¿HTML5?
- 26. herramientas para desarrollar aplicaciones de Silverlight o WPF
- 27. Ayuda con el efecto Pixel Shader para brillo y contraste
- 28. propiedades complejo de unión en Silverlight/WPF
- 29. ¿Cómo usar archivos EPS en una aplicación WPF o Silverlight?
- 30. Estilo WPF DataGrid-Silverlight DataGrid?
Si hay controles interactivos, deberá agregar 'IsHitTestVisible =" False "' al lienzo. –