GDI+ Circle Animation: 5 Circles |
|
Introduction
This drawing contains 5 circles: one central empty circle and 4 circles around (left, top, right, and bottom sides). The central circle increases up to the width of the form and decreases down to around to close the center of the form. The small circles around have a fixed diameter but also stay attached to the borders of the central circle.
using System; using System.Drawing; using System.Windows.Forms; public class Exercise : Form { PictureBox pbxCanvas; private Timer tmrDrawObjects; bool isMax; int mainRadius; public Exercise() { InitializeComponent(); } private void InitializeComponent() { pbxCanvas = new PictureBox(); pbxCanvas.Dock = DockStyle.Fill; pbxCanvas.Paint += new PaintEventHandler(pbxCanvasPaint); Controls.Add(pbxCanvas); tmrDrawObjects = new Timer(); tmrDrawObjects.Interval = 20; tmrDrawObjects.Enabled = true; tmrDrawObjects.Tick += new EventHandler(tmrDrawObjectsTick); Text = "Circle Animation"; Load += new EventHandler(FormLoad); MaximizeBox = false; StartPosition = FormStartPosition.CenterScreen; ClientSize = new System.Drawing.Size(1024, 1024); } private void FormLoad(object sender, EventArgs e) { mainRadius = 100; } private void DrawCentralCircle(Graphics graph, int Radius) { int start = (pbxCanvas.ClientRectangle.Width / 2) - Radius; int end = (pbxCanvas.ClientRectangle.Height / 2) - Radius; int diam = Radius * 2; graph.DrawEllipse(new Pen(Color.Orange), start, end, diam, diam); } void DrawBorderingCircle(Graphics graph, Color color, int left, int top) { graph.DrawEllipse(new Pen(color), left, top, 40, 40); } void DrawLeftCircle(Graphics graph) { graph.DrawEllipse(new Pen(Color.White), (pbxCanvas.ClientRectangle.Width / 2) - mainRadius - 20, (pbxCanvas.ClientRectangle.Height / 2) - 20, 40, 40); } void DrawTopCircle(Graphics graph) { graph.DrawEllipse(new Pen(Color.Green), (pbxCanvas.ClientRectangle.Width / 2) - 20, (pbxCanvas.ClientRectangle.Height / 2) - mainRadius - 20, 40, 40); } void DrawRightCircle(Graphics graph) { graph.DrawEllipse(new Pen(Color.Red), (pbxCanvas.ClientRectangle.Width / 2) + mainRadius - 20, (pbxCanvas.ClientRectangle.Height / 2) - 20, 40, 40); } void DrawBottomCircle(Graphics graph) { graph.DrawEllipse(new Pen(Color.Yellow), (pbxCanvas.ClientRectangle.Width / 2) - 20, (pbxCanvas.ClientRectangle.Height / 2) + mainRadius - 20, 40, 40); } private void pbxCanvasPaint(object sender, PaintEventArgs e) { e.Graphics.FillRectangle(new SolidBrush(Color.Black), 0, 0, Width, Height); // Central Circle DrawCentralCircle(e.Graphics, mainRadius); // Left Circle DrawBorderingCircle(e.Graphics, Color.White, (pbxCanvas.ClientRectangle.Width / 2) - mainRadius - 20, (pbxCanvas.ClientRectangle.Height / 2) - 20); //DrawLeftCircle(e.Graphics); // Top Circle DrawBorderingCircle(e.Graphics, Color.Green, (pbxCanvas.ClientRectangle.Width / 2) - 20, (pbxCanvas.ClientRectangle.Height / 2) - mainRadius - 20); //DrawTopCircle(e.Graphics); // Right Circle DrawBorderingCircle(e.Graphics, Color.Red, (pbxCanvas.ClientRectangle.Width / 2) + mainRadius - 20, (pbxCanvas.ClientRectangle.Height / 2) - 20); //DrawRightCircle(e.Graphics); // Bottom Circle DrawBorderingCircle(e.Graphics, Color.Yellow, (pbxCanvas.ClientRectangle.Width / 2) - 20, (pbxCanvas.ClientRectangle.Height / 2) + mainRadius - 20); //DrawBottomCircle(e.Graphics); } private void tmrDrawObjectsTick(object sender, EventArgs e) { if (isMax == true) mainRadius--; else mainRadius++; if (mainRadius > (pbxCanvas.ClientRectangle.Height / 2)) isMax = true; if (mainRadius < 10) isMax = false; pbxCanvas.Invalidate(); } [STAThread] public static int Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Exercise()); return 0; } }
|
||
Home | Copyright © 2016-2021, FunctionX | Home |
|