ARTICLE

Rotation Sample

Posted by John O Donnell Articles | GDI+ & Graphics April 24, 2001
After reading Mike Golds article on transforms I thought I would get things moving a bit!
Reader Level:
Download Files:
 

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#? 

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();
}
}
}

Login to add your contents and source code to this article
post comment
     

What do each of the parameters signify in the rotation matrix? I have done some research on Microsoft's web site and read a few articles on this web site but I have not found the  answer.

Posted by Bruce Zelenka Apr 06, 2007
COMMENT USING
PREMIUM SPONSORS
DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and add new content to existing PDF documents from within your applications.
Get Career Advice from Experts
SPONSORED BY
  • PDF reports have never been easier to create. With our included WYSIWYG Designer, you can layout your reports, set up your data source and let DynamicPDF ReportWriter do the rest.
Get Career Advice from Experts