Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以用WPF摇动用户的桌面吗?_Wpf_Shake - Fatal编程技术网

我可以用WPF摇动用户的桌面吗?

我可以用WPF摇动用户的桌面吗?,wpf,shake,Wpf,Shake,我正在写一个个人使用的应用程序,它将跟踪我多久够一次鼠标,并将保留一个计数器,记录我多长时间没有鼠标。当我使用鼠标时,我想让它震动一下我的桌面工作区,作为一种消极的强化动作 该应用程序将被称为WristSlap,并将在我准备好0.1版后立即发布到github上 您可以创建一个具有不断变化的旋转着色器效果的透明窗口 不过,我不确定这是否能解决你对电脑的依赖。丹尼正在研究透明窗口的想法。但它不一定要透明。不过,您必须接受某些限制 您可能希望更改桌面的外观,并将其应用于全屏WPF窗口。(查看my以获得

我正在写一个个人使用的应用程序,它将跟踪我多久够一次鼠标,并将保留一个计数器,记录我多长时间没有鼠标。当我使用鼠标时,我想让它震动一下我的桌面工作区,作为一种消极的强化动作


该应用程序将被称为WristSlap,并将在我准备好0.1版后立即发布到github上

您可以创建一个具有不断变化的旋转着色器效果的透明窗口


不过,我不确定这是否能解决你对电脑的依赖。

丹尼正在研究透明窗口的想法。但它不一定要透明。不过,您必须接受某些限制

您可能希望更改桌面的外观,并将其应用于全屏WPF窗口。(查看my以获得WPF窗口的便捷FullScreenBehavior)。然后,只需将一些动画应用于根元素上的平移布局变换。这会产生震动的效果。最后,窗户可以关上了

因为在动画过程中,所有东西的坐标都会到处都是,所以您可能不想麻烦尝试将移动桌面上的鼠标单击转换为底层控件。如果动画足够短,那就无关紧要了,因为当它抖动时,你没有时间尝试单击任何东西

为了获得更逼真的效果,您可以考虑使用DWM(桌面窗口管理器)来投影桌面的“实时”视图,但这可能不值得,尤其是如果动画非常短的话

我几乎想亲自尝试一下

我现在是用静态图像设计的。这没关系,但可以改进

<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>


将此添加为答案,我会将其标记为已接受的答案。我想摆脱的不是对电脑的沉迷。我想做一些东西,让我少用鼠标,多用键盘。然后试试Logitech dinovo mini。这听起来有点邪恶(无意冒犯,从技术上讲,这很有趣)。想象一下,假冒的防病毒应用程序这样做是为了阻止你离开他们的窗口。这就是为什么Silverlight web应用程序不允许你制作接受键盘输入的全屏窗口。但这是关于WPF的,WPF可以完全访问Windows API,因此显示全屏窗口不是一个问题。如果WPF应用程序正在你的桌面上运行,那么它已经可以做任何它想做的事情了。这就是Control+Alt+Delete序列的用途。仅供参考,Silverlight 4将在全屏模式下具有一些键盘输入功能。仅适用于具有提升权限的本地安装的应用程序。