2010-03-04 12 views
5

Estoy escribiendo una aplicación para uso personal que hará un seguimiento de la frecuencia con la que alcanzo el mouse, y mantendrá un contador de cuánto tiempo he pasado sin mouse. Cuando uso el mouse, me gustaría sacudir el espacio de trabajo de mi escritorio por un segundo como una acción de refuerzo negativa.¿Puedo agitar el escritorio de un usuario usando WPF?

La aplicación se llamará WristSlap y estará en github tan pronto como tenga lista la versión 0.1.

+0

añadir que como una respuesta y voy a marcarlo como la respuesta aceptada. –

Respuesta

4

Danny tiene algo que ver con la idea de la ventana transparente. Pero no tiene que ser transparente. Sin embargo, debería aceptar ciertas limitaciones.

Desea grab a screen shot del escritorio y lo aplica a una ventana de WPF de pantalla completa. (Eche un vistazo a mi blog para ver un útil FullScreenBehavior para la ventana de WPF). Luego, simplemente aplicará una animación inductora de epilepsia a una transformación de diseño de traducción en el elemento raíz. Esto daría el efecto de temblar. Al final, la ventana podría cerrarse.

Dado que durante la animación las coordenadas de todo estarán por todas partes, es probable que no quiera molestarse en intentar traducir los clics del mouse en el escritorio en movimiento al control subyacente. Si la animación es lo suficientemente corta, no importará porque no tendrás tiempo de intentar hacer clic mientras está temblando.

Para mayor realismo, podría considerar el uso de DWM (Desktop Window Manager) para proyectar una vista "en vivo" del escritorio, pero eso probablemente no valga la pena, especialmente si mantiene la animación muy corta.

Casi quiero probar esto por mi propia cuenta.

Se me ocurrió esto usando una imagen estática por ahora. Está bien, pero podría mejorarse.

<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

Esto realmente suena un poco malvado (sin ofender, es interesante técnicamente hablando). Imagine aplicaciones antivirus falsas que hacen esto para evitar que deje sus ventanas. – Riddari

+1

Bueno, esa es la razón por la que las aplicaciones web de Silverlight no le permiten hacer ventanas de pantalla completa que aceptan la entrada del teclado. Pero se trata de WPF, que tiene acceso completo a la API de Windows, por lo que mostrar una ventana de pantalla completa no es una preocupación. Si se está ejecutando una aplicación WPF en su escritorio, entonces ya puede hacer lo que quiera. Para eso sirve la secuencia Control + Alt + Suprimir. – Josh

+0

FYI, Silverlight 4 tendrá algunas capacidades de entrada de teclado en modo de pantalla completa. – Gabe

1

Puede crear una ventana transparente con un efecto de sombreado de giro variable.

No estoy seguro de que eso resuelva tu adicción a las computadoras.

+0

No es la adicción a las computadoras que estoy tratando de sacudir. Intento hacer algo que me haga usar el mouse con menos frecuencia y usar más el teclado. –

+0

Luego pruebe con Logitech dinovo mini. –

Cuestiones relacionadas