我正在编写一款个人使用的应用程序,用于跟踪我使用鼠标的频率,并计算我已经多长时间没有使用鼠标了。当我使用鼠标时,我希望它可以在桌面上震动一秒钟,作为一种负面强化行为。
这个应用程序将被称为 WristSlap,并且一旦我准备好 0.1 版本,它将在 Github 上发布。
这个应用程序将被称为 WristSlap,并且一旦我准备好 0.1 版本,它将在 Github 上发布。
Danny提出了透明窗口的想法,这个想法很有潜力。但它不一定非要是透明的。然而,您需要接受某些限制。
您需要抓取桌面截图并将其应用于全屏WPF窗口。(请查看我的博客,获取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>
你可以使用旋转着色器效果创建一个带有透明度的窗口。
但我不确定这能解决你对电脑的瘾。