我自己写的第一个 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. C#.net磁盘管理以及文件操作

    原文发布时间为:2008-08-08 -- 来源于本人的百度文章 [由搬家工具导入]    需要引入的命名空间: using System.IO;using System.Text; private ...

  2. 使用Reachability检测网格

    
#pragma mark - 网络连接检查 - (void) currentReach { // 网络检测 Reachability *curReach = [Reachability reacha ...

  3. 社区发现(Community Detection)算法

    作者: peghoty 出处: http://blog.csdn.net/peghoty/article/details/9286905 社区发现(Community Detection)算法用来发现 ...

  4. Jetson TK1 一:调整屏幕分辨率

    先点击分辨率调整的那个对话框,就是1024×768之类的那个,选定一个分辨率,我选的是1366x768(16:9)的那个,然后连续按7下tab按键,然后回车,然后再点击弹出的选项右边一个就能保存了.

  5. python多线程(二)

    原文:http://blog.sina.com.cn/s/blog_4b5039210100esc1.html 基础不必多讲,还是直接进入python. Python代码代码的执行由python虚拟机 ...

  6. UVA11825 Hackers' Crackdown

    题目描述 PDF 输入输出格式 输入格式: 输出格式: 输入输出样例 输入样例#1: 3 2 1 2 2 0 2 2 0 1 4 1 1 1 0 1 3 1 2 0 输出样例#1: Case 1: 3 ...

  7. Java 利用DFA算法 屏蔽敏感词

    原文:http://www.open-open.com/code/view/1435214601278 import java.io.BufferedReader; import java.io.Fi ...

  8. PHP网站渗透中的奇技淫巧:检查相等时的漏洞

    PHP是现在网站中最为常用的后端语言之一,是一种类型系统 动态.弱类型的面向对象式编程语言.可以嵌入HTML文本中,是目前最流行的web后端语言之一,并且可以和Web Server 如apache和n ...

  9. [WASM] Run WebAssembly in Node.js using the node-loader

    WebAssembly is great for targeting performance bottlenecks in the browser. Now with node-loader, we ...

  10. Solidworks打印工程图超出范围了怎么办

    打印预览,边框部分无法显示   页面设置,比例改为90%,试一下   正常了,如果你还是无法正常显示,就再改小比例