我自己写的第一个 Silverlight 2.0 程序 

 
[Silverlight 2.0 控制物体绕圆弧运行(C#初探篇)] 
           
程序运行时:小地球将绕着圆形轨迹做圆周运动。

【xaml】:很简单,一张图片,再使用一个 Ellipse ,无填充颜色即可,记得为图片起名字 [earth] 
<Canvas Margin="0,0,0,0"> 
  <Ellipse Height="300" Width="300" Canvas.Left="0" Canvas.Top="0" Fill="{x:Null}" 
           Stroke="#FFFFA500" StrokeThickness="3"/> 
  <Image Height="50" Width="50" Canvas.Left="0" Canvas.Top="0" Source="52.png" x:Name="earth"/> 
</Canvas> 
【xaml.cs】记得引用时间控件的命名空间 
using System.Windows.Threading; 
public partial class Page : UserControl 
    { 
        DispatcherTimer timer1 = new DispatcherTimer(); 
        DispatcherTimer timer2 = new DispatcherTimer(); 
    //设置 x 坐标轴变化范围(300 为该圆的直径) 
        double x_temp = 0; 
        double x2_temp = 300; 
        //初始加载事件 
        public Page() 
        { 
            InitializeComponent(); 
            //设置时钟频率为 5 毫秒 
            TimeSpan ts = TimeSpan.FromMilliseconds(0.005); 
            timer1.Interval = ts; 
            timer1.Tick += new EventHandler(timer_Tick); 
            timer1.Start(); 
            timer2.Interval = ts; 
            timer2.Tick += new EventHandler(timer2_Tick); 
        } 
        /// <summary> 
        /// 根据圆弧的 x 坐标获取 y 坐标的方法 
        /// </summary> 
        /// <param name="a">圆弧中心点的 x 坐标</param> 
        /// <param name="b">圆弧中心点的 y 坐标</param> 
        /// <param name="c">圆弧的半径</param> 
        /// <param name="d">x 坐标轴的最大范围</param> 
        /// <returns>返回与 x 坐标相关的圆弧 y 坐标</returns> 
        public double get_y(double a, double b, double c, double d) 
        { 
            double A = a; 
            double B = b; 
            double R = c; 
            double x = d; 
            double y = 0; 
            //分解 (x - a)(x - a) 
            double x_result = (x * x) - (2 * A * x) + (A * A); 
           //变换圆标准方程式 
            for (x = 0; x <= 2 * R;x++ ) 
            { 
                double j = Math.Sqrt(R * R - x_result); 
                y = j + B; 
            } 
            return y; 
        } 
        /// <summary> 
        /// timer2 控制事件 
        /// 该事件处控制一个 圆心为 150,150,半径为 150 的圆弧(下半弧) 
        /// </summary> 
        void timer2_Tick(object sender, EventArgs e) 
        { 
            double y2_temp = this.get_y(150,150,150,x2_temp); 
            earth.SetValue(Canvas.LeftProperty,x2_temp-25); 
            earth.SetValue(Canvas.TopProperty,y2_temp-25); 
            x2_temp--; 
            //当 x 坐标递减到等于 0 时,下半弧完成,重新初始 
            if (x2_temp == 0) 
            { 
                timer2.Stop(); 
                timer1.Start(); 
                x2_temp = 300; 
            } 
        } 
        /// <summary> 
        /// timer1 控制事件 
        /// 该事件处控制一个 圆心为 150,150,半径为 150 的圆弧(上半弧) 
        /// </summary> 
        void timer_Tick(object sender, EventArgs e) 
        { 
            x_temp = x_temp + 1; 
            double y_temp = this.get_y(150, 150, 150, x_temp); 
            //上半弧的纵坐标等于圆弧的直径减去下半弧的纵坐标 
            double y_really = 300 - y_temp; 
            earth.SetValue(Canvas.LeftProperty, x_temp-25); 
            earth.SetValue(Canvas.TopProperty, y_really-25); 
            //当 x 坐标递增到等于圆弧直径长时,上半弧完成,重新初始 
            if (x_temp == 300) 
            { 
                timer1.Stop(); 
                timer2.Start(); 
                x_temp = 0; 
            } 
        } 
    }

[Silverlight 2.0 控制物体绕圆弧运行(C#初探篇)]的更多相关文章

  1. Unity3D 几个基本动画(控制物体移动、旋转、缩放)

    Transform基本移动函数: 1.指定方向移动: //移动速度 float TranslateSpeed = 10f; //Vector3.forward 表示"向前" tra ...

  2. Maya 脚本控制物体自转

    在Maya中,我们可以用脚本来控制物体的自转方向,速度等等,步骤如下: 选择需要操作的物体object,打开通道盒Channel Box,点击编辑Edit,打开表达式Expressions面板 选择需 ...

  3. Unity编程回忆录之控制物体移动

    最新心血来潮,然后开始学习Unity3D游戏开发引擎,对于一个主流的跨平台3D游戏开发引擎,我已经深深的为他着迷了,于是果断的开始学习这个引擎,而且刚刚预装的游戏引擎最新版中4.3版本已经开始原生支持 ...

  4. 未找到导入的项目“C:\Program Files\MSBuild\Microsoft\Silverlight\v5.0\Microsoft.Silverlight.CSharp.targets”。

    问题描述: 原先创建的Silverlight程序,后来系统重装了,再打开Silverlight程序时提示:C:\Users\yzg\Desktop\ocr\TJSilverlight\TJSilver ...

  5. iOS_2_button控制物体形变

    终于效果图: BeyondViewController.h // // BeyondViewController.h // 02_button控制物体形变 // // Created by beyon ...

  6. 自学silverlight 5.0

    这是一个silverlight游戏:http://keleyi.com/keleyi/phtml/silverlight/ 接了个单子,非要用Silverlight 5来作一个项目,之前从来没接触过这 ...

  7. Cassandra2.0.8导入到eclipse运行

    如果想通过eclipse来调试或者查看Cassandra的代码,将其project导入到eclipse之中不愧是个好选择.下面将讲述将2.0.8 版本导入elcipse的过程. 该篇文章主要参考的官方 ...

  8. Unity —— 通过鼠标点击控制物体移动

    //ClickMove - - 通过鼠标点击控制物体移动 using System.Collections; using System.Collections.Generic; using Unity ...

  9. Unity3d 控制物体移动、旋转、缩放

    在Unity中通过利用 Input Manager(输入管理器)可以很简单的实现对一个物体进行移动.旋转.缩放操作. 演示代码: //通过虚拟轴控制物体移动.旋转.缩放 public class Mo ...

随机推荐

  1. HDU 5033 Building(北京网络赛B题) 单调栈 找规律

    做了三天,,,终于a了... 11724203 2014-09-25 09:37:44 Accepted 5033 781MS 7400K 4751 B G++ czy Building Time L ...

  2. 基于CI框架的管理系统

    1:ci框架是有入口文件的,前端和后台入口文件(index.php,admin.php):里面修改$application_folder = 'application/home': 2:项目基本都是在 ...

  3. Neo4j 第七篇:模式(Pattern)

    模式和模式匹配是Cypher的核心,使用模式来描述所需数据的形状,该模式使用属性图的结构来描述,通常使用小括号()表示节点,-->表示关系,-[]->表示关系和关系的类型,箭头表示关系的方 ...

  4. Word中将文本框、图形对象中的文本边距调整

    在进行word的实际使用中,如下图制作流程图时,常常发现文字在图形对象中,老是显示不全,而且上部却空出很多距离.此时可以通过设置形状格式--文本框 --- 上.下编辑进行设置. 可以完美解决文本框中文 ...

  5. [转] SQL Server中变量的声明和使用方法

    原文地址 SQL Server中变量的声明和使用方法 声明局部变量语法: DECLARE @variable_name DataType 其中 variable_name为局部变量的名称,DataTy ...

  6. Error: cannot call methods on draggable prior to initialization; attempted to call

    cannot call methods on draggable prior to initialization; attempted to call  报这个问题的根本原因是由于你的引用文件有问题 ...

  7. python之入门,你好,中国

    print("你好,中国") 可以运行py文件实现一样的效果(py文件编码一定要是utf-8编码) 你好中国基础教程结束!

  8. Android开发之入口Activity

    Android开发之入口Activity Adnroid App是怎样确定入口Activity的? 难道就由于class的类名叫MainActivity,布局文件叫activity_main.xml? ...

  9. Js学习第十天----函数

    函数 什么是函数?函数是由事件驱动的或者当他被调用时运行的可反复使用代码块.预计没明确,个人觉得函数就是能完毕一个功能的代码块. 看个案例: <!DOCTYPE html> <htm ...

  10. Androidproject文件下assets目录与res目录的差别

    1. assets : 不会在R.java文件下生成对应的标记,assets目录能够自己创建目录,必须使用AssetsManager类进行訪问,存放到这里的资源在执行打包的时候都会打入程序安装包中, ...