rendered paste body static int angle = 0;
static int length = 100;
static int ratio = 50;
static int levels = 3;
static int x = 425/2;
static int y = 460/2;
static int shape = 0;
System::Drawing::Pen^ myPen;
System::Drawing::Graphics^ g;
System::Drawing::Brush^ myBrush;
private: array<Color>^ colorArray;
static Random^ randomNumber;
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
g = this->CreateGraphics();
colorArray = gcnew array<Color>(12);
colorArray[0] = Color::Red;
colorArray[1] = Color::Blue;
colorArray[2] = Color::Yellow;
colorArray[3] = Color::Green;
colorArray[4] = Color::Orange;
colorArray[5] = Color::Purple;
colorArray[6] = Color::Pink;
colorArray[7] = Color::Gray;
colorArray[8] = Color::Teal;
colorArray[9] = Color::LightGreen;
colorArray[10] = Color::LightBlue;
colorArray[11] = Color::Brown;
DateTime now = DateTime::Now;
randomNumber = gcnew Random(now.Millisecond);
}
private: System::Void exitToolStripMenuItem1_Click(System::Object^ sender, System::EventArgs^ e) {
Close();
}
private: System::Void toolStripMenuItem2_Click(System::Object^ sender, System::EventArgs^ e) {
angle = 0;
drawFractal();
}
private: System::Void toolStripMenuItem3_Click(System::Object^ sender, System::EventArgs^ e) {
angle = 15;
drawFractal();
}
private: System::Void toolStripMenuItem4_Click(System::Object^ sender, System::EventArgs^ e) {
angle = 30;
drawFractal();
}
private: System::Void toolStripMenuItem5_Click(System::Object^ sender, System::EventArgs^ e) {
angle = 45;
drawFractal();
}
private: System::Void toolStripMenuItem6_Click(System::Object^ sender, System::EventArgs^ e) {
angle = 60;
drawFractal();
}
private: System::Void toolStripMenuItem7_Click(System::Object^ sender, System::EventArgs^ e) {
angle = 75;
drawFractal();
}
private: System::Void toolStripMenuItem8_Click(System::Object^ sender, System::EventArgs^ e) {
angle = 90;
drawFractal();
}
private: System::Void toolStripMenuItem9_Click(System::Object^ sender, System::EventArgs^ e) {
length = 75;
drawFractal();
}
private: System::Void toolStripMenuItem10_Click(System::Object^ sender, System::EventArgs^ e) {
length = 100;
drawFractal();
}
private: System::Void toolStripMenuItem11_Click(System::Object^ sender, System::EventArgs^ e) {
length = 150;
drawFractal();
}
private: System::Void toolStripMenuItem12_Click(System::Object^ sender, System::EventArgs^ e) {
ratio = 45;
drawFractal();
}
private: System::Void toolStripMenuItem13_Click(System::Object^ sender, System::EventArgs^ e) {
ratio = 50;
drawFractal();
}
private: System::Void toolStripMenuItem14_Click(System::Object^ sender, System::EventArgs^ e) {
ratio = 55;
drawFractal();
}
private: System::Void toolStripMenuItem15_Click(System::Object^ sender, System::EventArgs^ e) {
levels = 1;
drawFractal();
}
private: System::Void toolStripMenuItem16_Click(System::Object^ sender, System::EventArgs^ e) {
levels = 2;
drawFractal();
}
private: System::Void toolStripMenuItem17_Click(System::Object^ sender, System::EventArgs^ e) {
levels = 3;
drawFractal();
}
private: System::Void toolStripMenuItem18_Click(System::Object^ sender, System::EventArgs^ e) {
levels = 4;
drawFractal();
}
private: System::Void toolStripMenuItem19_Click(System::Object^ sender, System::EventArgs^ e) {
levels = 5;
drawFractal();
}
private: System::Void toolStripMenuItem20_Click(System::Object^ sender, System::EventArgs^ e) {
levels = 6;
drawFractal();
}
private: System::Void toolStripMenuItem21_Click(System::Object^ sender, System::EventArgs^ e) {
levels = 7;
drawFractal();
}
private: void drawFractal()
{
this ->Refresh();
if(shape == 0)
{
drawBranch(x,y,angle,length,levels);
drawBranch(x,y,angle+90,length,levels);
drawBranch(x,y,angle+180,length,levels);
drawBranch(x,y,angle+270,length,levels);
}
else if(shape == 1)
{
drawRectangle(x,y,angle,length,levels);
drawRectangle(x,y,angle+90,length,levels);
drawRectangle(x,y,angle+180,length,levels);
drawRectangle(x,y,angle+270,length,levels);
}
else
{
drawEllipse(x,y,angle,length,levels);
drawEllipse(x,y,angle+90,length,levels);
drawEllipse(x,y,angle+180,length,levels);
drawEllipse(x,y,angle+270,length,levels);
}
}
private: System::Void imagesToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {
}
private: System::Void linesToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {
shape = 0;
drawFractal();
}
private: System::Void rectanglesToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {
shape = 1;
drawFractal();
}
private: System::Void ellipsesToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {
shape = 2;
drawFractal();
}
private: void drawBranch(int x, int y, int ang, int len, int lev)
{
int newX = x + (int) (Math::Cos(Math::PI* ang/180.0)*len);
int newY = y + (int) (Math::Sin(Math::PI* ang/180.0)*len);
myPen = gcnew System::Drawing::Pen(colorArray[randomNumber->Next(0,11)]);
g->DrawLine(myPen,x,y,newX,newY);
if (lev > 1)
{
drawBranch(newX,newY,ang,len*ratio/100,lev-1);
drawBranch(newX,newY,ang+90,len*ratio/100,lev-1);
drawBranch(newX,newY,ang+270,len*ratio/100,lev-1);
}
}
private: void drawRectangle(int x, int y, int ang, int len, int lev)
{
int newX = x + (int) (Math::Cos(Math::PI* ang/180.0)*len);
int newY = y + (int) (Math::Sin(Math::PI* ang/180.0)*len);
myBrush = gcnew System::Drawing::SolidBrush(colorArray[randomNumber->Next(0,11)]);
Drawing::Rectangle myRect(x,y,Math::Abs(newX-x),Math::Abs(newY-y));
g->FillRectangle(myBrush,myRect);
if (lev > 1)
{
drawRectangle(newX,newY,ang,len*ratio/100,lev-1);
drawRectangle(newX,newY,ang+90,len*ratio/100,lev-1);
drawRectangle(newX,newY,ang+90,len*ratio/100,lev-1);
}
}
private: void drawEllipse(int x, int y, int ang, int len, int lev)
{
int newX = x + (int) (Math::Cos(Math::PI* ang/180.0)*len);
int newY = y + (int) (Math::Sin(Math::PI* ang/180.0)*len);
myBrush = gcnew System::Drawing::SolidBrush(colorArray[randomNumber->Next(0,11)]);
Drawing::Rectangle myRect(x,y,Math::Abs(newX-x),Math::Abs(newY-y));
g->FillEllipse(myBrush,myRect);
if (lev > 1)
{
drawEllipse(newX,newY,ang,len*ratio/100,lev-1);
drawEllipse(newX,newY,ang+90,len*ratio/100,lev-1);
drawEllipse(newX,newY,ang+90,len*ratio/100,lev-1);
}
}
};
}