2010-03-04 8 views
5

Sto scrivendo un'applicazione per uso personale che tiene traccia della frequenza con cui raggiungo il mouse e manterrà un contatore di quanto tempo non ci sono riuscito. Quando uso il mouse, mi piacerebbe che scuotesse il mio spazio di lavoro del desktop per un secondo come azione di rinforzo negativa.Posso scuotere un desktop degli utenti usando WPF?

L'applicazione si chiamerà WristSlap e sarà su github non appena ho una versione 0.1 pronta.

+0

Aggiungere quella risposta e la contrassegnerò come risposta accettata. –

risposta

4

Danny è su qualcosa con l'idea della finestra trasparente. Ma non deve essere trasparente. Dovresti comunque accettare alcune limitazioni.

Si desidera grab a screen shot del desktop e applicarlo a una finestra WPF a schermo intero. (Controlla il mio blog per un utile FullScreenBehavior per la finestra WPF). Quindi applicheresti solo un'animazione che induce l'epilessia a una trasformazione del layout di traduzione sull'elemento radice. Ciò darebbe l'effetto di scuotere. Alla fine la finestra potrebbe chiudersi.

Poiché durante l'animazione le coordinate di tutto saranno dappertutto, probabilmente non vorrai essere disturbato nel tentativo di tradurre i clic del mouse sul desktop mobile nel controllo sottostante. Se l'animazione è abbastanza breve, non importa, perché non avrai tempo di provare a fare clic su qualsiasi cosa mentre scuote.

Per un maggiore realismo, è possibile utilizzare DWM (Desktop Window Manager) per proiettare una vista "live" del desktop, ma probabilmente non ne vale la pena, soprattutto se si mantiene l'animazione molto breve.

Ho quasi voglia di provare questo me stesso per divertimento.

L'ho trovato usando un'immagine statica per ora. Va bene ma potrebbe essere migliorato.

<Image Source="Slide1.png" Stretch="UniformToFill"> 

<Image.Effect> 
    <BlurEffect Radius="5" /> 
</Image.Effect> 

<Image.RenderTransform> 
    <TranslateTransform Y="0" X="0"/> 
</Image.RenderTransform> 

<Image.Triggers> 
    <EventTrigger RoutedEvent="FrameworkElement.Loaded"> 
    <BeginStoryboard> 
     <Storyboard RepeatBehavior="00:00:01" SpeedRatio="15"> 
     <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)"> 
      <SplineDoubleKeyFrame KeyTime="00:00:00.1000000" Value="-10"/> 
      <SplineDoubleKeyFrame KeyTime="00:00:00.3000000" Value="0"/> 
      <SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="10"/> 
      <SplineDoubleKeyFrame KeyTime="00:00:00.7000000" Value="0"/> 
     </DoubleAnimationUsingKeyFrames> 
     <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.Y)"> 
      <SplineDoubleKeyFrame KeyTime="00:00:00.1000000" Value="-10"/> 
      <SplineDoubleKeyFrame KeyTime="00:00:00.3000000" Value="-10"/> 
      <SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="10"/> 
      <SplineDoubleKeyFrame KeyTime="00:00:00.7000000" Value="10"/> 
      <SplineDoubleKeyFrame KeyTime="00:00:00.9000000" Value="0"/> 
     </DoubleAnimationUsingKeyFrames> 
     </Storyboard> 
    </BeginStoryboard> 
    </EventTrigger> 
</Image.Triggers> 

</Image> 
+0

In realtà suona un po 'male (senza offesa, è interessante tecnicamente parlando). Immagina le false applicazioni antivirus che ti impediscono di lasciare le loro finestre. – Riddari

+1

Bene, ecco perché le app Web di Silverlight non ti consentono di creare finestre a schermo intero che accettano input da tastiera. Ma questo riguarda WPF che ha pieno accesso all'API di Windows, quindi mostrare una finestra a schermo intero non è un problema. Se una app WPF è in esecuzione sul desktop, può già fare ciò che vuole. Ecco a cosa serve la sequenza Control + Alt + Delete. – Josh

+0

FYI, Silverlight 4 avrà alcune funzionalità di input da tastiera in modalità schermo intero. – Gabe

1

È possibile creare una finestra trasparente con un effetto shader twirl che cambia.

Non sono sicuro che risolverà la tua dipendenza dai computer.

+0

Non è la dipendenza dai computer che sto cercando di scuotere. Sto cercando di creare qualcosa che mi faccia usare il mouse meno spesso e usare la tastiera di più. –

+0

Quindi prova un mini din. Logitech. –

Problemi correlati