zoukankan      html  css  js  c++  java
  • silverlight2中的定时器,以及如何动态改变控件的坐标

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

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

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

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

    xaml内容:

    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代码:

    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; }
            }


        }
    }
    作者:菩提树下的杨过
    出处:http://yjmyzz.cnblogs.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    python 获取项目的根路径
    信息系统项目管理师-1.4软件工程
    信息系统项目管理师
    信息系统项目管理师-导学
    信息系统项目管理师-考试安排
    读取text行列
    pipeline基本框架思维
    Linux压缩隐藏文件
    python+appium环境搭建
    leetcode for mysql
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/1424346.html
Copyright © 2011-2022 走看看