wpf - 我可以使用 WPF 摇动用户桌面吗?

标签 wpf shake

我正在编写一个供个人使用的应用程序,该应用程序将跟踪我接触鼠标的频率,并记录我离开鼠标的时间。当我使用鼠标时,我希望它在我的桌面工作区晃动一秒钟,作为一种消极的强化 Action 。

该应用程序将被称为 WristSlap,一旦我准备好 0.1 版,它就会在 github 上。

最佳答案

丹尼对透明 window 的想法很感兴趣。但它不必是透明的。不过,您将不得不接受一些特定的限制。

你会想要 grab a screen shot桌面并将其应用于全屏 WPF 窗口。 (查看我的 blog 以获得 WPF 窗口的方便 FullScreenBehavior)。然后,您只需将一些诱发癫痫的动画应用于根元素上的平移布局变换。这将产生摇晃的效果。最后,窗口可能会关闭。

由于在动画过程中,所有东西的坐标都在各处,您可能不想为将移动桌面上的鼠标点击转换为底层控件而烦恼。如果动画足够短,那也没关系,因为在它摇晃时您没有时间尝试点击任何东西。

为了更真实,您可以考虑使用 DWM(桌面窗口管理器)来投影桌面的“实时” View ,但这可能不值得,特别是如果您将动画保持得很短。

我几乎想亲自尝试一下。

我现在使用静态图像想出了这个。没关系,但可以改进。

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

关于wpf - 我可以使用 WPF 摇动用户桌面吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2382374/

相关文章:

iOS : How to detect Shake motion?

javascript - 使用 JavaScript 对 Web 应用程序进行 Android 浏览器震动检测

wpf - 每当 ListView 子控件获得焦点时,如何更新 ListViewItem.SelectedItem?

c# - 如何在 WPF 中显示 Windows 文件图标?

c# - WPF 将祖先对象绑定(bind)为 CommandParameter

asp.net - 加载共享类库时出错

Android 在摇晃时做特殊 Action

java - 有谁知道简单震动检测器的任何示例代码?

c# - 从系统中获取注销事件

iphone - 如何使用 UIStoryboard segues 将数据从一个 View 传递到 IOS 中的另一个 View ?