当前位置:开发者网络 >> 技术教程 >> .NET教程 >> Windows开发 >> 内容
精彩推荐
分类最新教程
分类热点教程
  
Rotation Sample
作者:未知
日期:2003-07-12
人气:
投稿:Andy.m(转贴)
来源:未知
字体:
收藏:加入浏览器收藏
以下正文:
Rotation Sample
Submitted ByUser LevelDate of Submission

John O扗onnell

Intermediate

04/24/2001


Download Exe: RotationSampleJ.zip 6 KB
Description of the Article
After reading Mike Golds article on transforms I thought I would get things moving a bit!
Overriding the OnPaint method and using the Timer class allows us to create a simple animation where we rotate a line around a central point.
Anyone want to create an asteroids clone in C#? J
  
Source Code:

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Drawing.Drawing2D;
namespace Rotationb2
{
      /// <summary>
      /// Summary description for Form1.
      /// </summary>
      public class Form1 : System.Windows.Forms.Form
      {
            private System.Windows.Forms.Timer timer1;
            private System.ComponentModel.IContainer components;
            public float f=0;
            public Form1()
            {
                  //
                  // Required for Windows Form Designer support
                  //
                  InitializeComponent();
                  //
                  // TODO: Add any constructor code after InitializeComponent
call
                //
            }
            /// <summary>
            /// Clean up any resources being used.
            /// </summary>
            protected override void Dispose( bool disposing )
            {
                  if( disposing )
                  {
                        if (components != null)
                        {
                              components.Dispose();
                        }
                  }
                  base.Dispose( disposing );
            }
  
            #region Windows Form Designer generated code
            /// <summary>
            /// Required method for Designer support - do not modify
            /// the contents of this method with the code editor.
            /// </summary>
            private void InitializeComponent()
            {
                  this.components = new System.ComponentModel.Container();
                  this.timer1 = new System.Windows.Forms.Timer(this.components);
                  //
                  // timer1
                  //
                  this.timer1.Enabled = true;
                  this.timer1.Interval = 50;
                  this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
                  //
                  // Form1
                  //
                  this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
                  this.ClientSize = new System.Drawing.Size(240, 221);
                  this.Name = "Form1";
                  this.Text = "Rotationb2";
             }
            #endregion
             /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main ()
            {
                  Application.Run(new Form1());
            }

            protected override void OnPaint(PaintEventArgs e)
            {
                  e.Graphics.DrawEllipse(Pens.Red,0,0,220,220);
                  GraphicsPath gp = new GraphicsPath();
                  gp.AddLine(30,30,110,110);
                  Matrix RotationTransform = new Matrix(1,0, 0,1,1,1);  //
rotation matrix
                  PointF TheRotationPoint = new PointF(110.0f, 110.0f);  //
rotation point
                  RotationTransform.RotateAt(f, TheRotationPoint);
                  gp.Transform(RotationTransform);
                  e.Graphics.DrawPath(Pens.Blue, gp);
                  f=f+10;
                  if (f==360)
                  f=0;              
            }
             private void timer1_Tick(object sender, System.EventArgs e)
            {
                  //force client window to be refreshed
                  this.Refresh();
            }
      }
}
相关文章: