2009-09-04 11 views
8

Nel mio progetto invio la finestra al vassoio in chiusura. Come posso dare un effetto animato per questo vale a dire, il movimento dalla posizione della finestra corrente al vassoio. E anche il contrario, significa facendo doppio clic sul notifyicon nel vassoio, la finestra sta arrivando in primo piano?Animare i movimenti della finestra dal vassoio

risposta

1

Non ho fatto molto in WPF, per cui tenetelo a mente.

sembra che questo può essere fatto attraverso l'API di Windows utilizzando DrawAnimatedRects come descritto here (Da leggere quanto mette in evidenza alcune insidie)

Questo è stato convertito in VB2005 here

Si potrebbe costruire qualcosa che incapsula questa funzionalità ma mi sembra un po 'hacky. Inoltre, non ho provato ad accedere all'API direttamente da un progetto WPF - presumo che sia possibile ma non posso garantirlo.

Il prossimo suggerimento migliore sarebbe quello di esaminare il Windows® API Code Pack for Microsoft® .NET Framework. Non ho ancora avuto la possibilità di approfondire questo problema ma c'è la possibilità che possa esporre la funzionalità in modo gestito.

In breve, sembra che le altre app che includono questa funzionalità gestiscano autonomamente l'API anziché affidarsi al framework.

0

Ho trovato couple di articles che dimostrano di animare la finestra sulla barra delle applicazioni, tuttavia non stanno utilizzando WPF, ma dovrebbero indirizzarvi nella giusta direzione.

0

Animare la finestra in vista quando si fa doppio clic sull'icona del vassoio è davvero facile in realtà perché si può semplicemente creare un'animazione o uno storyboard WPF per spostare la finestra dalla posizione corrente del mouse (proprio sopra l'icona del vassoio) a dove mai tu voglio sullo schermo.

Se si aggiunge un'animazione di ridimensionamento e opacità, si dovrebbe ottenere un risultato piacevole (ma utilizzare Storyboard in caso di più animazioni in esecuzione insieme).

Animare la finestra indietro all'icona del vassoio è un po 'più complicato perché non si conosce la posizione esatta di esso, in modo da poter ridurre la finestra alla direzione generale delle icone del vassoio e farlo svanire solo prima che arrivi lì o in qualsiasi altro modo.

Puoi anche salvare la posizione se l'icona del vassoio quando viene cliccato per aprire la finestra la prima volta, o provare a ottenere la posizione reale usando Windows API, che non consiglio.

Buona fortuna.

0

Bene, la risposta rapida alla tua domanda sarebbe che non è possibile eseguire utilizzando WPF. Il motivo per cui WPF vive all'interno del chrome della finestra che stai visualizzando e stai provando ad animare il chrome.

L'animazione che si sta tentando di raggiungere può essere eseguita, ma è necessario utilizzare le chiamate API di Windows per farlo. I suggerimenti di Basiclife sono un punto di partenza perfetto

Problemi correlati