#pragma once
namespace Circular
{
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
/// <summary>
/// Summary for Form1
///
/// WARNING: If you change the name of this class, you will need to change the
/// 'Resource File Name' property for the managed resource compiler tool
/// associated with all .resx files this class depends on. Otherwise,
/// the designers will not be able to interact properly with localized
/// resources associated with this form.
/// </summary>
public __gc class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
}
protected:
void Dispose(Boolean disposing)
{
if (disposing && components)
{
components->Dispose();
}
__super::Dispose(disposing);
}
private: System::Windows::Forms::Timer * timer1;
private: System::ComponentModel::IContainer * components;
Graphics *graphDrawingArea;
Bitmap *bmpDrawingArea;
private:
/// <summary>
/// Required designer variable.
/// </summary>
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
void InitializeComponent(void)
{
this->components = new System::ComponentModel::Container();
this->timer1 = new System::Windows::Forms::Timer(this->components);
//
// timer1
//
this->timer1->Enabled = true;
this->timer1->Interval = 20;
this->timer1->Tick += new System::EventHandler(this, timer1_Tick);
//
// Form1
//
this->AutoScaleBaseSize = System::Drawing::Size(5, 13);
this->BackColor = System::Drawing::Color::Black;
this->ClientSize = System::Drawing::Size(292, 266);
this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::None;
this->MaximizeBox = false;
this->Name = S"Form1";
this->Text = S"Form1";
this->KeyDown += new System::Windows::Forms::KeyEventHandler(this, Form1_KeyDown);
this->Load += new System::EventHandler(this, Form1_Load);
}
private: System::Void Form1_Load(System::Object * sender, System::EventArgs * e)
{
bmpDrawingArea = new Bitmap(Width, Height);
graphDrawingArea = Graphics::FromImage(bmpDrawingArea);
Cursor::Hide();
}
private: System::Void Form1_KeyDown(System::Object * sender,
System::Windows::Forms::KeyEventArgs * e)
{
if( e->KeyCode == Keys::Escape )
Close();
}
void DrawCentralCircle(int CenterX, int CenterY, int Radius)
{
int start = CenterX - Radius;
int end = CenterY - Radius;
int diam = Radius * 2;
graphDrawingArea->DrawEllipse(new Pen(Color::Blue), start, end, diam, diam);
}
void DrawCornerCircle(int CenterX, int CenterY, int Radius)
{
int start = CenterX - Radius;
int end = CenterY - Radius;
int diam = Radius * 2;
graphDrawingArea->DrawEllipse(new Pen(Color::Red), start, end, diam, diam);
}
private: System::Void timer1_Tick(System::Object * sender, System::EventArgs * e)
{
Graphics *graph = Graphics::FromHwnd(this->Handle);
int centerX = ClientRectangle.Width / 2;
int centerY = ClientRectangle.Height / 2;
static int mainRadius = 10;
static int smallRadius = 5;
static bool isMax;
static bool smallRadiusMax;
if( isMax == true )
mainRadius--;
else
mainRadius++;
if( mainRadius > (ClientRectangle.Height / 2) )
isMax = true;
if( mainRadius < 10 )
isMax = false;
if( smallRadiusMax == true )
smallRadius--;
else
smallRadius++;
if( smallRadius > 240 )
smallRadiusMax = true;
if( smallRadius < 5 )
smallRadiusMax = false;
graphDrawingArea->FillRectangle(new SolidBrush(Color::Black), 0, 0, Width, Height);
// Central
DrawCentralCircle(centerX, centerY, mainRadius);
// Top-Left
DrawCornerCircle(centerX/2, centerY/2, smallRadius);
// Top-Right
DrawCornerCircle(centerX + (centerX/2), centerY/2, smallRadius);
// Bottom-Left
DrawCornerCircle(centerX/2, centerY + (centerY/2), smallRadius);
// BottomRight
DrawCornerCircle(centerX + (centerX/2), centerY + (centerY/2), smallRadius);
graph->DrawImage(bmpDrawingArea, 0, 0);
}
};
}
|