silverlight   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Silverlight 解谜游戏 之十一 鼠标的新衣大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_675_1@

概述

       本篇我们将对鼠标指针进行美化,也给它穿上好看点的马甲,对于其样式来源可以选择Image 或Path。可以通过微软的 Expression Design 设计出鼠标指针样式。     先看看鼠标指针换上新装的效果:   1. 将鼠标指针图片加入Images 文件夹: 2. 在Interactivity 中创建Mouse@R_674_10930@or 文件夹,并在其中加入Mouse@R_674_10930@orBehavi

       本篇我们将对鼠标指针进行美化,也给它穿上好看点的马甲,对于其样式来源可以选择Image 或Path。可以通过微软的 Expression Design 设计出鼠标指针样式@H_944_19@@H_944_19@Silverlight 解谜游戏 之十一 鼠标的新衣

@H_944_19@@H_944_19@Silverlight 解谜游戏 之十一 鼠标的新衣

   

先看看鼠标指针换上新装的效果

Silverlight 解谜游戏 之十一 鼠标的新衣

 

1. 将鼠标指针图片加入Images 文件夹:

@H_944_19@@H_944_19@Silverlight 解谜游戏 之十一 鼠标的新衣

2. 在Interactivity 中创建@H_69_61@mouse@R_674_10930@or 文件夹,并在其中加入@H_69_61@mouse@R_674_10930@orBehavior、NameResolvedEventArgsNameResolver 类:

@H_944_19@@H_944_19@Silverlight 解谜游戏 之十一 鼠标的新衣

3. 在NameResolver 类中,最关键的就是updateObjectFromname 方法它将@R_674_10930@orName 属性与鼠标指针对象结合起来:

private void updateObjectFromname(DependencyObject oldObject)  {     DependencyObject resolvedObject = null;     this.ResolvedObject = null;       if (this.NameScopeReferenceElement != null)     {        if (!ISELER_508_11845@entLoaded(this.NameScopeReferenceElement))        {            this.NameScopeReferenceElement.Loaded += 
new RoutedEventHandler(this.onNameScopeReferenceLoaded); this.PendingReferenceElementLoad = true; return; } if (!String.IsNullOrEmpty(this.Name)) { FrameworkElement actualNameScopeReferenceElement =
this.ActualNameScopeReferenceElement; if (actualNameScopeReferenceElement != null) { resolvedObject = actualNameScopeReferenceElement.FindName(this.Name)
as DependencyObject; } } } this.HasAttempedResolve = true; this.ResolvedObject = resolvedObject; if (oldObject != this.object) { this.onObjectChanged(oldObject,this.object); } }

4. 在Mouse@R_674_10930@orBehavior 类中,存有@R_674_10930@orName、OffsetX、OffsetY 属性,它们将用于在Blend 中对鼠标指针进行设置:

public static readonly DependencyProperty @R_674_10930@orNameProperty =     DependencyProperty.Register("@R_674_10930@orName",typeof(String),typeof(@H_73_86@mouse@R_674_10930@orBehavior),new PropertyMetadata(new PropertyChangedCallBACk(On@R_674_10930@orNameChanged)));    public static readonly DependencyProperty OffsetXProperty =    DependencyProperty.Register("OffsetX",typeof(double),null);    public static readonly DependencyProperty OffsetYProperty =    DependencyProperty.Register("OffsetY",null);

以及MouseEnter、MouSELEave、MouseMove 事件:

private void AssociatedObject_MouseEnter(object sender,@H_73_86@mouseEventArgs E)  {     if (!this.Is@R_674_10930@orNameSet)        return;       FrameworkElement @R_674_10930@or = @R_674_10930@or as FrameworkElement;     @R_674_10930@or.IsHitTestVisible = false;     @R_674_10930@or.Visibility = Visibility.Visible;       if (@R_674_10930@orStack.Count > 0 && @R_674_10930@orStack.Peek() != @R_674_10930@or)     {        @R_674_10930@orStack.Peek().Visibility = Visibility.Collapsed;     }       if (!@R_674_10930@orStack.Contains(@R_674_10930@or))        @R_674_10930@orStack.Push(@R_674_10930@or);       AssociatedObject.@R_674_10930@or = @R_674_10930@ors.None;       this.AssociatedObject.MouseMove += new @H_73_86@mouseEventHandler(AssociatedObject_MouseMovE);  }    private void AssociatedObject_MouSELEave(object sender,@H_73_86@mouseEventArgs E)  {     if (!this.Is@R_674_10930@orNameSet)        return;       FrameworkElement @R_674_10930@or = @R_674_10930@or as FrameworkElement;     @R_674_10930@or.Visibility = Visibility.Collapsed;       @R_674_10930@orStack.Pop();       if (@R_674_10930@orStack.Count > 0)     {        @R_674_10930@orStack.Peek().Visibility = Visibility.Visible;     }       this.AssociatedObject.MouseMove -= new @H_73_86@mouseEventHandler(AssociatedObject_MouseMovE);     AssociatedObject.@R_674_10930@or = null;  }    private void AssociatedObject_MouseMove(object sender,@H_73_86@mouseEventArgs E)  {     if (!this.Is@R_674_10930@orNameSet)        return;       FrameworkElement @R_674_10930@or = @R_674_10930@or as FrameworkElement;       Point @H_255_85@mousePosition = e.GetPosition(null);     @R_674_10930@or.Margin = new Thickness(mousePosition.X + OffsetX,mousePosition.Y + OffsetY,0);    }

5. 添加好上面三个类并重新编译后,我们回到Blend 中,为UserControl 添加新的Behavior->@H_69_61@mouse@R_674_10930@orBehavior:

@H_944_19@@H_944_19@Silverlight 解谜游戏 之十一 鼠标的新衣

6. 在LayoutRoot 中添加鼠标指针图片,命名为@R_674_10930@orArrow

@H_944_19@@H_944_19@Silverlight 解谜游戏 之十一 鼠标的新衣

将其放在GameScreen 上方,Left 设为0,Top 设为-50

@H_944_19@@H_944_19@Silverlight 解谜游戏 之十一 鼠标的新衣

@H_944_19@@H_944_19@Silverlight 解谜游戏 之十一 鼠标的新衣

7. 选择刚刚添加的Mouse@R_674_10930@orBehavior 将@R_674_10930@orName 设为鼠标指针名称@R_674_10930@orArrow,OffsetY 设为50(因为之前它与LayoutRoot有-50的偏差):

@H_944_19@@H_944_19@Silverlight 解谜游戏 之十一 鼠标的新衣

运行程序便可看到新的鼠标指针效果,源代码下载:

大佬总结

以上是大佬教程为你收集整理的Silverlight 解谜游戏 之十一 鼠标的新衣全部内容,希望文章能够帮你解决Silverlight 解谜游戏 之十一 鼠标的新衣所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。