2011-03-07 71 views
4

我们在我们的WPF应用程序中有几个图标。我们想要做一个动画,就像动画边缘的一个小灯塔一样,只是无休止地绕过它,并且遵循图标的轮廓。我们通过在图标周围手动创建路径并使信标沿着该路径(与剪影相匹配)找到了一种方法,但由于我们有许多不同形状的图标,因此手动工作过多。我们想知道WPF是否有办法自动执行此操作,因此我们只需编写一次,然后再使用其他图标。有没有办法在WPF中为图像的边缘添加动画?

任何建议非常欢迎。

谢谢。

编辑

Something like this

+0

@卡洛它真的只是一个你想要动画的边框?还是比圆角的椭圆/矩形/矩形更复杂的形状? – 2011-03-16 11:01:45

+0

对两者都是。我只想要边框,形状也很复杂,其中之一就是一部摄影机卡通片。 – Carlo 2011-03-16 18:08:38

+0

@Carlo,这仍然不完全清楚。该链接提供的动画仅仅是一个带圆角的矩形边框。我可以告诉你如何做到这一点,没有问题。是你想要的吗? – 2011-03-16 18:16:30

回答

1

哎。这不是矫枉过正的使用wpf动画功能吗?你不能只在Photoshop中创建一些小动画或使用其他东西,只是把它们放进去?

喜欢动画.gifs。唯一的问题是:如果我正确地记住它,WPF在将.GIFs动画化为嵌入式资源时遇到了问题。所以你必须从磁盘加载它们。或者您可以将它们作为嵌入式资源,但您必须暂时将它们提取到磁盘,然后将它们加载到应用程序的窗口中。

+0

图像控件本身并不显示动画GIF图像,但有很多方法可以使它工作......我写了一个附加属性以使它更容易,您可以在[这里]找到它(http://tomlev2.wordpress的.com/2011/3月27日/ WPF的显示一个动画-GIF图像/) – 2011-03-31 21:27:53

1

如果您使用的是.NET 3.5 SP1或更高版本,并且您需要代码解决方案而不是动画GIF,我的建议将是Pixel Shader。您需要编写自己的Pixel Shader来执行以下操作:

  1. 检测边缘。 http://www.codeproject.com/KB/openGL/EdgeDetection.aspx
  2. 获取一个输入参数,该参数可以使用指示信标位置的故事板进行动画。 http://www.codeproject.com/KB/dialog/WpfParentWindowShader.aspx
  3. 突出显示由信标位置参数指示的边缘,并返回图像中所有其他点的原始颜色。

如果您还没有使用Pixel Shaders,我会推荐下载Shazzam工具http://shazzam-tool.com/。它包含一个交互式开发环境,用于在简单图像上创建和测试着色器,还包含数量可观的像素着色器和源代码,以帮助您了解它们。

相关问题