SilverLlight学习笔记之一 < 旋转效果笔记>
时间:2010-12-08 来源:刀手的孤独
在silverlight实现图片的旋转,其实很容易做到,silverlight中提供的:PlaneProjection
类 就是用来处理对象的透视转换(类似三维效果)比如:RotationY 、RotationZ、RotationX 分别用来表示对象绕Y\Z\X轴的旋转角度(默认值是0度)。
在silverlight中,可视控件(如:Button、Grid、Image等)即system.Windows.UIElement都可以通过 其Projection属性来设置或获其应用的透视投影(三维效果)。如下代码演示了:为一个Image指定绕Y、Z轴旋转效果。
<Image x:Name="ydyimg" Grid.Row="1" Source="./image1.png" >
public partial class Test2 : Page
{
private PlaneProjection _ppj;
private const int sd = 1;
public Test2()
{
InitializeComponent();
_ppj = new PlaneProjection();
this.Projection = _ppj;
CompositionTarget.Rendering += new EventHandler(play);
}
private void play(object sender ,EventArgs e)
{
_ppj.RotationY+=sd;
_ppj.RotationZ+=sd;
}
}
这里要注意使用了
CompositionTarget.Rendering += new EventHandler(play);
这句代码,CompositionTarget是一个静态类
表示基于 Silverlight 的应用程序的显示图面 其事件:Rendering表示: 呈现过程呈现某一帧时发生.
所以CompositionTarget.Rendering += new EventHandler(play);是让在silverlight帧变化时 触发play使旋转角度改变。
考虑一个问题:
如何对于旋转还有一个关键要素就是旋转速度调整,当然可以通过旋转的角度来改变它但是 如果要更为平滑就应该像flash里面可以调整帧频,silverlight里面帧频的设置如下:
App.Current.Host.Settings.MaxFrameRate = N;
N值越大旋转越快