silverlight2中的定时器,以及如何动态改变控件的坐标

简介: 参考了园子里nasa写里的定时器的用法,以及旋转木马的部分代码,弄了一个小小的示例,贴在这里方便以后备查 目的:让某一个控件沿着圆形轨迹运动 xaml:采用Canvas布局,通过动态修改控件的Margin值来改变位置 cs代码:利用定时器触发来设置Margin值  xaml内容: Cod...

参考了园子里nasa写里的定时器的用法,以及旋转木马的部分代码,弄了一个小小的示例,贴在这里方便以后备查

目的:让某一个控件沿着圆形轨迹运动

xaml:采用Canvas布局,通过动态修改控件的Margin值来改变位置

cs代码:利用定时器触发来设置Margin值 

xaml内容:

ContractedBlock.gif ExpandedBlockStart.gif Code
<UserControl
    
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class
="SilverlightApplication2.Page"
    Width
="300" Height="300" xmlns:vsm="clr-namespace:System.Windows;assembly=System.Windows" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d">    

    
<Canvas x:Name="LayoutRoot" Background="White">
        
        
<TextBlock x:Name="txtTime" Height="10" Width="10" Text="A" Canvas.Left="10" Canvas.Top="10" FontSize="12" Foreground="Red" />
        
<Ellipse Height="200" Width="200" Canvas.Left="10" Canvas.Top="10" Fill="{x:Null}" Stroke="#22000000" Canvas.ZIndex="-1"/>
        
       
    
</Canvas>
</UserControl>

 

cs代码:

ContractedBlock.gif ExpandedBlockStart.gif Code
using System;
using System.Windows.Controls;
using System.Windows.Threading;

namespace SilverlightApplication2
{
    
public partial class Page : UserControl
    {
        
public Page()
        {
           
            InitializeComponent();
            DispatcherTimer dt 
= new DispatcherTimer();
            dt.Interval 
= new TimeSpan(0000100); // 50 Milliseconds
            dt.Tick += new EventHandler(dt_Tick);
            dt.Start();   
        }

        
int angle = 0;
        
int radius = 100;        

        
void dt_Tick(object sender, EventArgs e)
        {
            
            angle 
= angle + 1;
            txtTime.Text 
= new System.Random().Next(110).ToString();
            
//Margin.Left = 半径*sin(角度),Margin.Top = 半径*cos(角度)--注意:角度要换成弧度,同时加上平移量
            txtTime.Margin = new System.Windows.Thickness(radius * Math.Cos(angle * Math.PI / 180+ radius, radius * Math.Sin(angle * Math.PI / 180+ radius, 00);
            
if (angle > 360) { angle = 0; }
        }


    }
}
目录
相关文章
Silverlight自定义数据绑定控件应该如何处理IEditableObject和IEditableCollectionView对象
原文:Silverlight自定义数据绑定控件应该如何处理IEditableObject和IEditableCollectionView对象 原创文章,如需转载,请注明出处。   最近在一直研究Silverlight下的数据绑定控件,发现有这样两个接口IEditableObject 和IEditableCollectionView,记录一下结论,欢迎交流指正。
841 0