我自己写的第一个 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. 如何让Gridview在没有数据的时候显示表头[没有使用SqlDataSource控件时]

    原文发布时间为:2008-08-03 -- 来源于本人的百度文章 [由搬家工具导入] 要看全文请点击http://blog.csdn.net/windok2004/archive/2007/10/28 ...

  2. ObjectDataSource配合存储过程(采用数据集)的使用(删除可以解决,但是编辑出错好像它的方法也无法解决

    原文发布时间为:2008-08-01 -- 来源于本人的百度文章 [由搬家工具导入] ObjectDataSource是比较有意思的一个东西 通过在网络上遍访各位高手,终于自己有了一些心得体会。现总结 ...

  3. hdu 1754 splay tree伸展树 初战(单点更新,区间属性查询)

    题意:与区间查询点更新,点有20W个,询问区间的最大值.曾经用线段树,1000+ms,今天的伸展树,890没ms,差不多. 第一次学习伸展树,一共花了2个单位时间,感觉伸展树真很有用,也很好玩.现在只 ...

  4. hdu3987,最小割时求最少割边数

    题意:求最小割时候割边最少的数量.算法:先求dinic一遍,跑出残网络,再把该网络中满流量(残量为0)的边 残量改为1,其他边残量改为无穷,则再跑一次最大流,所得即为答案.(思,最小割有喝多组,但是要 ...

  5. 深入探究Java中hashCode()和equals()的关系

    目录 一.基础:hashCode() 和 equals() 简介 equals() hashCode() 二. 漫谈:初识 hashCode() 与 equals() 之间的关系 三. 解密:深入理解 ...

  6. 74.Search in a 2D Matrix

    /* * 74.Search in a 2D Matrix * 12.5 by Mingyang * 这里面的对应挺巧的: * 这个就是将2D矩阵转化成1行数组的对应表.所以对于二分查找法的初始值为: ...

  7. php使用strpos,strstr,strchr注意啦,若是数字查找则会当成ASCII码处理

    strpos,strstr,strchr都是查找某字符出现的位置,若未找到,则返回false(判断是===) 如: var_dump(strpos("oa",'97')); var ...

  8. Mac Ubuntu ----端口被占用

    Mac下使用lsof(list open files)来查看端口占用情况,lsof 是一个列出当前系统打开文件的工具. 使用 lsof 会列举所有占用的端口列表: 1 $ lsof 使用less可以用 ...

  9. python中pymysql使用

    python中pymysql使用 https://blog.csdn.net/johline/article/details/69549131 import pymysql # 连接数据库 conne ...

  10. Visual Studio VS如何统计代码行数

    编辑-查找和替换-在文件中查找,然后查找内容填写下面的东西,勾选使用正则表达式,点击查找全部 b*[^:b#/]+.*$   在查找结果的最后一行显示了总的行数和文件数                 ...