2010-08-13 72 views
1

问候,每个人。如何使用WriteableBitmap创建简单的动画?

我想学习一些Silverlight基础知识,并决定编写一个简单的Mandelbrot集绘图应用程序出于这个原因。当然,在Silverlight中。 ;)

该应用程序主要完成。我使用WriteableBitmap来处理像素,并在一个空的表单上放置一个简单的图像来显示该位图(使用Source属性)。我甚至设法缩放并移动分形。

现在我想通过添加一点点动画来增添一点点刺激感;我知道我不能进行分形移动,因为它是一个标量图形对象,但是例如,当我放大时,如果初始缩放是平滑动画,那么应用程序会重新计算新的“放大”锋利如刀“的形象。同样,如果我拖动图像(用于移动分形)并且鼠标离开图像区域,如果分形平滑返回到初始位置(如现在它只是“快速”返回当初始设置被恢复时)。

我的问题是,我不知道在动画中控制哪个参数。例如,我使用ScaleTransform进行缩放,但用于在位图本身上呈现WriteableBitmap,而不是使用图像对象的transform属性。我这样做是因为当我开始操作图像属性时,整个图像开始在表单中移动,当我宁愿它的边界保持原位时。

我怀疑我可能会尝试去做一些Silverlight本来不打算做的事情(我已经开始做这件事情错了),但是如果我可以添加这样的小动画,那太好了。因此,任何提示赞赏。

+1

这听起来很有趣,但如果你的目的是“学习silverlight的基础知识”,那么你就远离了轨道。 – AnthonyWJones 2010-08-13 08:14:28

+0

为什么?我不是艺术家,虽然我可以获得Expression Blend,但我更感兴趣的是了解Silverlight的内部工作方式,因此需要对代码本身进行操作。 :] 好的,如果我描述的太古怪了,那怎么样:我会如何创建一个框架来限制UI元素的显示方式?例如:我有一个200x200的图像,但我只想显示它的100x100部分而不调整它的大小。我怎么能这样做? – Shaamaan 2010-08-16 07:43:52

回答

0

听起来好像你想使用Silverlight动画引擎来动画你自己的自定义属性,它控制你的图像显示,而不是图像元素或容器。

如果您的用于控制图像外观的属性显示为双重Dependancy Properties,则动画系统可以使用基本的对象随着时间的推移平滑地更改您的设置。您甚至可以在Expression Blend中创作动画。

动画引擎肯定会给你缓动功能等来消除动作。如果我有更详细的关于你的对象是如何构造的,我可以更具体,但我希望这有助于。