Silverlight 解谜游戏 之七 放大镜(3)

Silverlight 解谜游戏 之七 放大镜(3),第1张

概述       在前两篇文章中,我们已经创建了“放大镜效果”和“放大镜CheckBox”,本篇内容将通过CheckBox来控制放大镜效果的开/关状态,并完成全部“放大镜”功能。在进行本篇内容前请确保您已经阅读过: ・ Silverlight 解谜游戏 之五 放大镜(1) ・ Silverlight 解谜游戏 之六 放大镜(2)   在完成本篇内容后将实现以下效果:   1. 下载BaseBehavi

       在前两篇文章中,我们已经创建了“放大镜效果”和“放大镜CheckBox”,本篇内容将通过CheckBox来控制放大镜效果的开/关状态,并完成全部“放大镜”功能。在进行本篇内容前请确保您已经阅读过:

・ Silverlight 解谜游戏 之五 放大镜(1)

・ Silverlight 解谜游戏 之六 放大镜(2)

 

在完成本篇内容后将实现以下效果:

 

1. 下载BaseBehavior.zip 进入VS 将以下程序加入到Interactivity 文件夹(参考资料 Base Classes for Custom Behaviors)

    ・ BaseBehavior.cs 
    ・ BaseBehaviorT.cs

             

 

2. 下载SetInteractionPropertyAction.zip 新增Interactivity\SetInteractionPropertyAction 文件夹,并将以下程序加入其中(参考资料 Creating an Action to set Properties on Actions & Behaviors)

    ・ ConverterHelper.cs
    ・ SetInteractionPropertyAction.cs

            

 

添加完以上四个程序,注意其命名空间应为:Findobject。

其中,ConverterHelper.cs 和SetInteractionPropertyAction.cs 程序需要使用CodePlex 的Expression Blend Samples 项目,下载安装后将Expression.Samples.Interactivity、Expression.Samples.Shaders 加入Reference:

3. 打开MagnifIErOverBehavior.cs 要使MagnifIErOverBehavior 继承BaseBehavior 类,以此来使用IsEnabled 属性。将Behavior 改为BaseBehavior:

public class MagnifIErOverBehavior : BaseBehavior<FrameworkElement>

将Associatedobject_MouseEnter 默认显示放大镜注释掉,需要通过IsEnabled 来进行调用:

private voID Associatedobject_MouseEnter( object sender,MouseEventArgs e )  {     this.Associatedobject.MouseMove += 
new MouseEventHandler( Associatedobject_MouseMove ); //this.Associatedobject.Effect = this.magnifIEr; }

Associatedobject_MouseMove 也要通过IsEnabled 来判断是否开启放大镜功能:

private voID Associatedobject_MouseMove( object sender,MouseEventArgs e )  {     if (IsEnabled) { if (this.Associatedobject.Effect != this.magnifIEr) { this.Associatedobject.Effect = this.magnifIEr; }          (this.Associatedobject.Effect as MagnifIEr).Center =         e.Getposition(this.Associatedobject);          Point mouseposition = e.Getposition(this.Associatedobject);        mouseposition.X /= this.Associatedobject.ActualWIDth;        mouseposition.Y /= this.Associatedobject.ActualHeight;        this.magnifIEr.Center = mouseposition;          Storyboard zoomInStoryboard = new Storyboard();        DoubleAnimation zoomInAnimation = new DoubleAnimation();        zoomInAnimation.To = this.magnifIEr.Magnification;        zoomInAnimation.Duration = TimeSpan.FromSeconds(0.5);        Storyboard.SetTarget(zoomInAnimation,this.Associatedobject.Effect);        Storyboard.SetTargetProperty(zoomInAnimation,
new PropertyPath(MagnifIEr.MagnificationProperty)); zoomInAnimation.FillBehavior = FillBehavior.HoldEnd; zoomInStoryboard.Children.Add(zoomInAnimation); zoomInStoryboard.Begin(); } }

4. 回到Blend,在TreeVIEw 中打开magnifIErCanvas 选择MagnifIErOverBehavior 将其命名为magnifIErBehavior,并将IsEnabled 属性设为false:

5. 在Assets->Behaviors 中为CheckBox 添加两个SetInteractionPropertyAction:

6. 第一个SetInteractionPropertyAction 用于启动放大镜功能,进行如下设置:

    ・ Eventname: Checked
    ・ Targetname: magnifIErCanvas
    ・ Objectname: magnifIErBehavior
    ・ Propertyname: IsEnabled
    ・ Value: true

7. 第二个SetInteractionPropertyAction 用于关闭放大镜功能,进行如下设置:

    ・ Eventname: Unchecked
    ・ Targetname: magnifIErCanvas
    ・ Objectname: magnifIErBehavior
    ・ Propertyname: IsEnabled
    ・ Value: false

8. 确定CheckBox 的IsChecked 属性是false 状态,运行程序便可实现放大镜可控效果。

9. 最后在放大镜下面加一个Notepad 图片,使其更加美观:

源代码下载:

总结

以上是内存溢出为你收集整理的Silverlight 解谜游戏 之七 放大镜(3)全部内容,希望文章能够帮你解决Silverlight 解谜游戏 之七 放大镜(3)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1039350.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存