WEB开发网
开发学院软件开发C语言 C#开发WPF/Silverlight动画及游戏系列教程(Game C... 阅读

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(三十二) 雷、混、冰、毒、火、风 - 幻化中的魔法魅力

 2010-09-30 20:58:24 来源:WEB开发网   
核心提示: 3)定义魔法附加属性视觉表现:麻痹 – 雪白混乱 – 黄色冰冻 – 天蓝中毒 – 绿色燃烧 – 红色虚弱 – 灰色第二步,具体实现:首先我们需要考虑的是如何实现精灵的变色,C#开发WPF/Silverlight动画及游戏系列

3)定义魔法附加属性视觉表现:

麻痹 – 雪白

混乱 – 黄色

冰冻 – 天蓝

中毒 – 绿色

燃烧 – 红色

虚弱 – 灰色

第二步,具体实现:

首先我们需要考虑的是如何实现精灵的变色,即如何改变精灵图片源的色相。在很多编程语言中都有现成的类库可以调用,但是在目前的 WPF/Silverlight中,至今我未能找到一种直接改变图片色相的方法。但这并不意味着WPF/Silverlight就此束手无策了,WPF /Silverlight的强大图形表现能力让我想到了控件蒙版,既然直接的不行,那么我们就来间接的。

接下来我们为精灵控件QXSpirit的表现层xaml中添加如下一个矩形蒙版:

        <Rectangle Name="BodyMask" Opacity="0.3" Visibility="Collapsed"  Panel.ZIndex="1">
            <Rectangle.OpacityMask>
                <ImageBrush x:Name="BodyMaskSource"></ImageBrush>
            </Rectangle.OpacityMask>
        </Rectangle>

此精灵身体蒙版默认情况下是不可见的,它的透明度为0.3,并且ZIndex必须覆盖于精灵之上。只要我们在后台cs中将此蒙版宽高与精灵图片源宽高时刻保持联动一致,这样,当需要的时候通过设置BodyMaskSource.ImageSource = Body.Source;然后根据前文中相应的视觉表现赋予蒙版Fill颜色,并将之显示出来。即可以轻松的模仿实现精灵图片源的色相改变。

实现色相改变原来如此的简单,只是在性能上来说等于增加了多余的消耗,但这并不是长期的,仅仅当精灵被施与附加属性后才会短时间变色,在恢复正常后即将蒙版隐藏,Collapsed将不再占用界面资源。

上一页  1 2 3 4 5 6 7  下一页

Tags:开发 WPF Silverlight

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接