我自己写的第一个 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. Java面试题集(四)

    二. Java Web基础部分 在js中如何创建一个对象? var p1={name:”tom”,”age”:12}; function Person(name,age){ this.name=nam ...

  2. Scrapy学习-8-ItemLoader

    ItemLoader使用 作用 方便管理维护重用xpath或css规则   实例 itemloader+图片处理 # items.py import scrapy from scrapy.loader ...

  3. 同时在windows和linux环境开发时换行符的处理

    Git 的 core.autocrlf 參數默认为true,即每次 checkin 時,Git 會將純文字類型的檔案中的所有 CRLF 字元轉換為 LF,也就是版本庫中的換行符號一律存成 LF:在 c ...

  4. android 服务

    1.创建服务 Exported:是否允许除了当前程序之外的其他程序访问这个服务 Enable:是否启用这个服务 点击完成后自动生成 import android.app.Service; import ...

  5. 使用wget进行整站下载(转)

    wget在Linux下默认已经安装,Windows下需要自行安装. Windows下载地址:http://wget.addictivecode.org/Faq.html#download,链接:htt ...

  6. __new__ 和 __init__

    new 在新式类中负责真正的实例化对象,而__init__只是负责初始化 __new__创建的对象.一般来说 new 创建一个内存对象,也就是实例化的对象的实体,交给__init__进行进一步加工.官 ...

  7. js -- 监听窗口的大小变化

  8. iOS开发 下滑隐藏Tabbar

    项目中用到下滑隐藏tabbar,上滑显示.      虽然实现起来非常简单,还是记录一下. -(void)scrollViewDidScroll:(UIScrollView*)scrollView { ...

  9. (C++ STL)list的实现

    #include <iostream> using namespace std; //採用迭代器和空间配置器所实现的双向链表的基本功能 template<class _Ty,clas ...

  10. SolidEdge如何为零件指定不同的颜色 给零件着色 给装配体着色

    格式-零件画笔 可以给零件的一个表面,或者一个特征着色   如果要指定不同的色彩,可以在格式-样式-面样式中修改   如果是给装配体着色,则点击任意零件,在"无"的选项卡里面修改颜 ...