Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Исходный код программы:
- Form1.cs
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Drawing.Drawing2D;
- using System.Linq;
- using System.Threading;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using System.Drawing.Imaging;
- using System.Windows.Forms;
- namespace lab1
- {
- public partial class Form1 : Form
- {
- void DrawLeaves()
- {
- Point[] leaves1 =
- {
- new Point(175, 150),
- new Point(185, 85),
- new Point(230, 125),
- new Point(175, 150),
- };
- Point[] leaves2 =
- {
- new Point(220, 120),
- new Point(205, 55),
- new Point(190, 35),
- new Point(220, 20),
- new Point(240, 40),
- new Point(260, 50),
- new Point(220, 120),
- };
- Point[] leaves3 =
- {
- new Point(300, 120),
- new Point(260, 70),
- new Point(300, 45),
- new Point(380, 70),
- new Point(340, 90),
- new Point(300, 120),
- };
- Graphics g = this.CreateGraphics();
- Pen penRed = new Pen(Color.Green, 6);
- g.DrawCurve(penRed, leaves1);
- g.DrawCurve(penRed, leaves2);
- g.DrawCurve(penRed, leaves3);
- }
- void DrawTree()
- {
- Point[] polygon1 =
- {
- new Point(185, 350),
- new Point(210, 300),
- new Point(210, 150),
- new Point(190, 120),
- new Point(180, 90),
- new Point(185, 90),
- new Point(210, 120),
- new Point(280, 150),
- new Point(280, 310),
- new Point(310, 350),
- };
- Point[] polygon2 =
- {
- new Point(210, 130),
- new Point(220, 90),
- new Point(220, 50),
- new Point(195, 30),
- new Point(205, 20),
- new Point(235, 50),
- new Point(230, 80),
- new Point(230, 130),
- };
- Point[] polygon3 =
- {
- new Point(210, 130),
- new Point(295, 90),
- new Point(310, 70),
- new Point(320, 70),
- new Point(315, 90),
- new Point(280, 150),
- };
- SolidBrush SolidBrown = new SolidBrush(Color.Brown);
- Graphics g = this.CreateGraphics();
- Pen penRed = new Pen(Color.Green, 6);
- g.FillPolygon(SolidBrown, polygon1);
- g.FillPolygon(SolidBrown, polygon2);
- g.FillPolygon(SolidBrown, polygon3);
- }
- void Animation()
- {
- Point[] leaves1 =
- {
- new Point(175, 150),
- new Point(185, 85),
- new Point(230, 125),
- new Point(175, 150),
- };
- Point[] leaves2 =
- {
- new Point(220, 120),
- new Point(205, 55),
- new Point(190, 35),
- new Point(220, 20),
- new Point(240, 40),
- new Point(260, 50),
- new Point(220, 120),
- };
- Point[] leaves3 =
- {
- new Point(300, 120),
- new Point(260, 70),
- new Point(300, 45),
- new Point(380, 70),
- new Point(340, 90),
- new Point(300, 120),
- };
- Graphics g = this.CreateGraphics();
- Pen penBrown = new Pen(Color.Green, 6);
- g.Clear(Color.White);
- int step = 5;
- for (int i = 1; i < 10; i++)
- {
- for (int j = 0; j < 4; j++) leaves1[j].X = leaves1[j].X + step;
- for (int j = 0; j < 7; j++) leaves2[j].X = leaves2[j].X + step;
- for (int j = 0; j < 4; j++) leaves3[j].X = leaves3[j].X + step;
- DrawTree();
- g.DrawCurve(penBrown, leaves1);
- g.DrawCurve(penBrown, leaves2);
- g.DrawCurve(penBrown, leaves3);
- Thread.Sleep(240);
- g.Clear(Color.White);
- for (int j = 0; j < 4; j++) leaves1[j].X = leaves1[j].X - step;
- for (int j = 0; j < 7; j++) leaves2[j].X = leaves2[j].X - step;
- for (int j = 0; j < 4; j++) leaves3[j].X = leaves3[j].X - step;
- DrawTree();
- g.DrawCurve(penBrown, leaves1);
- g.DrawCurve(penBrown, leaves2);
- g.DrawCurve(penBrown, leaves3);
- Thread.Sleep(240);
- if(i!=9) g.Clear(Color.White);
- }
- }
- void DrawName()
- {
- Graphics g = this.CreateGraphics();
- LinearGradientBrush myBrush = new LinearGradientBrush(ClientRectangle, Color.Black,
- Color.Yellow, LinearGradientMode.Horizontal);
- Font myFont = new Font("Tahoma", 12, FontStyle.Regular);
- g.DrawString("Шагалеев Гали", myFont, myBrush, new RectangleF(70, 130, 120, 200));
- }
- void DrawGraphic()
- {
- //система координат:
- Graphics g = this.CreateGraphics();
- g.Clear(Color.White);
- Pen penBlue = new Pen(Color.Blue);
- Font drawFont = new Font("Arial", 12);
- Font signatureFont = new Font("Arial", 7);
- SolidBrush drawBrush = new SolidBrush(Color.Blue);
- StringFormat drawFormat = new StringFormat();
- drawFormat.FormatFlags = StringFormatFlags.DirectionRightToLeft;
- int sizeWidth = Form1.ActiveForm.Width;
- int sizeHeight = Form1.ActiveForm.Height;
- Point center = new Point(((int)((sizeWidth / 2) - 100)), (int)((sizeHeight / 2) - 20));
- g.DrawLine(penBlue, 10, center.Y, center.X, center.Y);
- g.DrawLine(penBlue, center.X, center.Y, 2 * center.X - 10, center.Y);
- g.DrawLine(penBlue, center.X, 10, center.X, center.Y);
- g.DrawLine(penBlue, center.X, center.Y, center.X, 2 * center.Y - 10);
- g.DrawString("X", drawFont, drawBrush, new PointF(2 * center.X - 5, center.Y + 10), drawFormat);
- g.DrawString("Y", drawFont, drawBrush, new PointF(center.X + 30, 5), drawFormat);
- g.DrawString("O", drawFont, drawBrush, new PointF(center.X - 30, center.Y + 30), drawFormat);
- g.DrawLine(penBlue, center.X, 10, center.X + 5, 20);
- g.DrawLine(penBlue, center.X, 10, center.X - 5, 20);
- g.DrawLine(penBlue, 2 * center.X - 10, center.Y, 2 * center.X - 20, center.Y + 5);
- g.DrawLine(penBlue, 2 * center.X - 10, center.Y, 2 * center.X - 20, center.Y - 5);
- int stepForAxes = 25;
- int lenghtShtrih = 3;
- int maxValueForAxesX = 4;
- int maxValueForAxesY = 3;
- float oneDelenieX = (float)maxValueForAxesX / ((float)center.X / (float)stepForAxes);
- float oneDelenieY = (float)maxValueForAxesY / ((float)center.Y / (float)stepForAxes);
- for (int i = center.X, j = center.X, k = 1; i < 2 * center.X - 30; j -= stepForAxes, i += stepForAxes, k++)
- {
- g.DrawLine(penBlue, i, center.Y - lenghtShtrih, i, center.Y + lenghtShtrih);
- g.DrawLine(penBlue, j, center.Y - lenghtShtrih, j, center.Y + lenghtShtrih);
- if (i < 2 * center.X - 55)
- {
- g.DrawString((k * oneDelenieX).ToString("0.0"), signatureFont, drawBrush,
- new PointF(i + stepForAxes + 9, center.Y + 6), drawFormat);
- g.DrawString((k * oneDelenieX).ToString("0.0") + "-", signatureFont, drawBrush,
- new PointF(j - stepForAxes + 9, center.Y + 6), drawFormat);
- }
- }
- for (int i = center.Y, j = center.Y, k = 1; j < 2 * center.Y - 30; j += stepForAxes, i -= stepForAxes, k++)
- {
- g.DrawLine(penBlue, center.X - lenghtShtrih, i, center.X + lenghtShtrih, i);
- g.DrawLine(penBlue, center.X - lenghtShtrih, j, center.X + lenghtShtrih, j);
- if (j < 2 * center.Y - 55)
- {
- g.DrawString((k * oneDelenieY).ToString("0.0"), signatureFont, drawBrush,
- new PointF(center.X - 6, i - stepForAxes - 9), drawFormat);
- g.DrawString((k * oneDelenieY).ToString("0.0") + "-", signatureFont, drawBrush,
- new PointF(center.X - 6, j + stepForAxes - 9), drawFormat);
- }
- }
- //функция:
- int numOfPoint = 100;
- double step = 4 / (double)numOfPoint;
- double[] first = new double[numOfPoint];
- double deg = 0;
- for (int i = 0; i < numOfPoint; i++)
- {
- deg = deg + (2 * Math.PI / numOfPoint);
- first[i] = (double)(2 * Math.Cos(deg) - Math.Cos(2 * deg));
- }
- deg = 0;
- double[] second = new double[numOfPoint];
- for (int i = 0; i < numOfPoint; i++)
- {
- deg = deg + (2 * Math.PI / numOfPoint);
- second[i] = (double)(2 * Math.Sin(deg) - Math.Sin(2 * deg));
- }
- Point[] pointOne = new Point[numOfPoint];
- float tempX = 1 / oneDelenieX * stepForAxes;
- float tempY = 1 / oneDelenieY * stepForAxes;
- for (int i = 0; i < numOfPoint; i++)
- {
- pointOne[i].X = center.X + (int)(first[i] * tempX);
- pointOne[i].Y = center.Y + (int)(second[i] * tempY);
- }
- g.DrawLines(new Pen(Color.Red), pointOne);
- g.DrawCurve(new Pen(Color.Green), pointOne);
- } //отрисовка графика
- void SaveScreen()
- {
- ImageFormat img = ImageFormat.Jpeg;
- saveFileDialog1.ShowDialog();
- switch (saveFileDialog1.FilterIndex)
- {
- case 0: img = ImageFormat.Bmp; break;
- case 1: img = ImageFormat.Jpeg; break;
- case 2: img = ImageFormat.Png; break;
- }
- Rectangle bounds = this.Bounds;
- Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height);
- Graphics g = Graphics.FromImage(bitmap);
- g.CopyFromScreen(new Point(bounds.Left, bounds.Top), Point.Empty, bounds.Size);
- bitmap.Save(saveFileDialog1.FileName, img);
- }
- void OpenPicture()
- {
- openFileDialog1.ShowDialog();
- pictureBox1.Image = Image.FromFile(openFileDialog1.FileName);
- }
- public Form1()
- {
- InitializeComponent();
- Bitmap bitmap = new Bitmap(pictureBox1.Width, pictureBox1.Height);
- pictureBox2.Hide();
- pictureBox1.Hide();
- }
- private void button1_Click(object sender, EventArgs e)
- {
- pictureBox2.Hide();
- pictureBox1.Hide();
- DrawTree(); DrawLeaves();
- }
- private void button3_Click(object sender, EventArgs e)
- {
- pictureBox2.Hide();
- pictureBox1.Hide();
- Thread a = new Thread(Animation);
- a.Start();
- }
- private void button2_Click(object sender, EventArgs e)
- {
- pictureBox2.Hide();
- pictureBox1.Hide();
- DrawName();
- }
- private void button4_Click(object sender, EventArgs e)
- {
- pictureBox2.Show();
- pictureBox1.Hide();
- DrawGraphic();
- }
- private void pictureBox1_Click(object sender, EventArgs e)
- {
- }
- private void button5_Click(object sender, EventArgs e)
- {
- SaveScreen();
- }
- private void button6_Click(object sender, EventArgs e)
- {
- pictureBox2.Hide();
- OpenPicture();
- pictureBox1.Show();
- }
- private void button7_Click(object sender, EventArgs e)
- {
- Graphics g = this.CreateGraphics();
- g.Clear(Color.White);
- Bitmap bitmap = new Bitmap(pictureBox1.Width, pictureBox1.Height);
- Graphics gr = Graphics.FromImage(bitmap);
- gr.Clear(Color.White);
- pictureBox1.Image = bitmap;
- pictureBox1.Hide();
- }
- }
- }
- Пример выполнения программы:
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement