【问题标题】:How do I create simple animations using a WriteableBitmap?如何使用 WriteableBitmap 创建简单的动画?
【发布时间】:2010-08-13 07:03:45
【问题描述】:

大家好。

我正在尝试学习一些 Silverlight 基础知识,并因此决定编写一个简单的 Mandelbrot-set 绘图应用程序。当然,在 Silverlight 中。 ;)

应用程序已基本完成。我正在使用 WriteableBitmap 来处理像素,并在空表单上放置一个简单的 Image 来显示此位图(使用 Source 属性)。我什至设法控制缩放和移动分形。

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

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

我怀疑我可能正在尝试做一些 Silverlight 最初并不打算做的事情(我已经开始做这整件事错了),但如果我可以添加这么小的动画,那就太好了。因此,任何提示都表示赞赏。

【问题讨论】:

  • 这听起来很有趣,但如果你的目的是“学习基础知识”silverlight,那你就离题太远了。
  • 为什么?我不是艺术家,虽然我可以获得 Expression Blend,但我更感兴趣的是了解 Silverlight 的内部结构,因此对代码本身进行操作。 :] 好的,如果我所描述的内容太古怪,那么这样:我将如何创建一个框架来限制 UI 元素的显示方式?例如:我有一个 200x200 的图像,但我只想显示 100x100 的一部分而不调整它的大小。我怎么能这样做?

标签: c# silverlight


【解决方案1】:

听起来您想使用 Silverlight 动画引擎为您自己的自定义属性设置动画,这些属性控制您的图像显示,而不是图像元素或容器。

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

动画引擎肯定会为您提供缓动功能等来平滑运动。如果我对您的对象的结构有更多详细信息,我可以更具体,但我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多