using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Drawing.Drawing2D; namespace ShapedForm { /// <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; 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(292, 273); this.Name = "Form1"; this.Text = "Form1"; } #endregion /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main () { Application.Run(new Form1()); } private void timer1_Tick(object sender, System.EventArgs e) { this.Refresh(); } protected override void OnPaint(PaintEventArgs e) { GraphicsPath gp = new GraphicsPath(); gp.AddEllipse(20,20,110,110); //gp.AddLine(30,30,110,110); Matrix RotationTransform = new Matrix(1,0, 0,1,1,1); // rotation matrix //Matrix TranslationTransform = new Matrix(1, 0, 0, 1, 0, 0); // translation matrix PointF TheRotationPoint = new PointF(110.0f, 110.0f); // rotation point // rotate the rotation transformation matrix f degrees around TheRotationPoint RotationTransform.RotateAt(f, TheRotationPoint); //Call the Transform method of the Graphics Path in order to multiply it by the rotation matrix and rotate the balloon gp.Transform(RotationTransform); e.Graphics.DrawPath(Pens.Black, gp); f=f+10; this.Region=new Region(gp); } } } |