我自己写的第一个 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. angular中的this指向问题

    this是指向当前$scope的. 例如在ng-click的使用中,this是指向当前的$scope而并不是dom元素的. 我们可以使用this的一些方法和属性 我们打印一下this就会发现,this ...

  2. msp430项目编程35

    msp430中项目---nand接口编程35 1.电路工作原理 2.代码(显示部分) 3.代码(功能实现) 4.项目总结

  3. poj 3461 hash解法

    字符串hash https://blog.csdn.net/pengwill97/article/details/80879387 https://blog.csdn.net/chaiwenjun00 ...

  4. T3137 栈练习1 codevs

    codevs.cn/problem/3137 题目描述 Description 给定一个栈(初始为空,元素类型为整数,且小于等于100),只有两个操作:入栈和出栈.先给出这些操作,请输出最终栈的栈顶元 ...

  5. 【面试 struts2】【第三篇】struts2的问题

    1.struts2的工作流程 1>客户端浏览器发出HTTP请求. 2>根据web.xml配置,该请求被FilterDispatcher接收 3>根据struts.xml配置,找到需要 ...

  6. iOS 获取appstore 版本

    项目上线以后一般都涉及到升级.那么iOS 怎样从appstore获取到版本 事实上非常easy NSString *url = [[NSString alloc] initWithFormat:@&q ...

  7. plsql 无需配置客户端连接.

    plsql 无需配置客户端连接. (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.5)(PORT=1521)))(C ...

  8. 设计模式入门之訪问者模式Visitor

    //訪问者模式定义:表示一个作用于某对象结构中的各个元素的操作,它使你能够在不改变各元素类的前提下定义作用于这些元素的新操作. //从定义上看.这个模式跟装饰模式的定义非常类似(动态地给一个对象加入一 ...

  9. find the longest of the shortest (hdu 1595 SPFA+枚举)

    find the longest of the shortest Time Limit: 1000/5000 MS (Java/Others)    Memory Limit: 32768/32768 ...

  10. Nova镜像使用方法

    Nova中的虚拟机可以从镜像.卷.卷快照等启动,一般装完OpenStack时,环境中既没有镜像也没有卷,这时候往往 需要上传一些已有的镜像,或者上传ISO文件来安装虚拟机系统.这个文档主要描述如何上传 ...