2009-09-04 20 views
8

En mi proyecto, estoy enviando la ventana a la bandeja al cerrar. ¿Cómo puedo dar un efecto animado para esto, es decir, el movimiento desde la posición actual de la ventana a la bandeja? Y también al revés, significa que al hacer doble clic en notifyicon en la bandeja, ¿la ventana está llegando al frente?Anima los movimientos de la ventana desde la bandeja

Respuesta

1

No he hecho mucho en WPF, así que tenlo en cuenta.

Parece que esto se puede hacer a través de la API de Windows usando DrawAnimatedRects como se describe here (Vale la pena leer, ya que pone de relieve algunas de las dificultades)

Esto se ha convertido en VB2005 here

Se puede construir algo que encapsula esta funcionalidad, pero se siente un poco raro para mí. Además, no he intentado acceder a la API directamente desde un proyecto de WPF; asumo que es posible, pero no puedo garantizarlo.

La siguiente mejor sugerencia sería investigar el Windows® API Code Pack for Microsoft® .NET Framework. Todavía no he tenido la oportunidad de profundizar en esto, pero existe la posibilidad de que exponga la funcionalidad de una manera administrada.

En resumen, parece que las otras aplicaciones que incluyen esta funcionalidad lo manejan ellas mismas a través de la API en lugar de depender del marco.

0

He encontrado couple de articles que demuestran animar la ventana a la bandeja del sistema, sin embargo, no están usando WPF, pero deben apuntar en la dirección correcta.

0

Animar la ventana a la vista cuando se hace doble clic en el icono de la bandeja es bastante fácil porque simplemente puede crear una animación WPF o guión gráfico para mover su ventana desde la posición actual del mouse (justo sobre el icono de la bandeja) querer en la pantalla.

Si agrega una animación de cambio de tamaño y opacidad debería obtener un buen resultado (pero use Storyboard en caso de que varias animaciones se ejecuten juntas).

La animación de la ventana al icono de la bandeja es un poco más complicada porque no se conoce su posición exacta, por lo que la ventana se minimiza en la dirección general de los iconos de la bandeja y se desvanece solo antes de llegar allí o de otra forma.

También puede guardar la posición si el icono de la bandeja cuando se hace clic para abrir la ventana la primera vez, o tratar de obtener la posición real utilizando la API de Windows, que no recomiendo.

Buena suerte.

0

Bueno, la respuesta rápida a su pregunta sería que no se puede hacerse con WPF. La razón de por qué es que WPF vive dentro del cromo de la ventana que está mostrando, y está tratando de animar el cromo.

Se puede hacer la animación que está tratando de lograr, pero deberá usar las llamadas a la API de Windows para hacerlo. Las sugerencias de Basiclife son un lugar perfecto para comenzar

Cuestiones relacionadas