Лабораторная работа №8
Задание:
1. Создать проект из одной формы двух кнопок.
2. При нажатии первой кнопки обеспечить вывод на экран вывести последовательность разноцветных овалов, вращаемую вокруг одной точки и иллюстрирующую эффект орбит электронов атома. Число овалов выбрать самостоятельно.
3. При нажатии на вторую кнопку обеспечить вращение нарисованных овалов вокруг заданной центральной точки. Интервал вращения выбрать самостоятельно.
Текст программы:
Главная форма проекта:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
namespace Компьютерная_графика__8
{
public partial class Form1 : Form
{
Graphics g;
Pen p = new Pen(Color.Orange, 3);
Rectangle r = new Rectangle(-90,-30,180,60);
int x = 1;
public Form1()
{
InitializeComponent();
g = this.CreateGraphics();
}
private void button1_Click(object sender, EventArgs e)
{
g.RotateTransform(45, MatrixOrder.Append);
g.TranslateTransform(200, 200, MatrixOrder.Append);
g.DrawEllipse(p, r);
g.ResetTransform();
g.RotateTransform(-45, MatrixOrder.Append);
g.TranslateTransform(200, 200, MatrixOrder.Append);
g.DrawEllipse(p, r);
g.ResetTransform();
g.RotateTransform(90, MatrixOrder.Append);
g.TranslateTransform(200, 200, MatrixOrder.Append);
g.DrawEllipse(p, r);
g.ResetTransform();
g.TranslateTransform(200, 200, MatrixOrder.Append);
g.DrawEllipse(p, r);
g.ResetTransform();
button2.Visible = true;
}
private void button2_Click(object sender, EventArgs e)
{
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
g.Clear(BackColor);
g.RotateTransform(45+x, MatrixOrder.Append);
g.TranslateTransform(200, 200, MatrixOrder.Append);
g.DrawEllipse(p, r);
g.ResetTransform();
g.RotateTransform(-45+x, MatrixOrder.Append);
g.TranslateTransform(200, 200, MatrixOrder.Append);
g.DrawEllipse(p, r);
g.ResetTransform();
g.RotateTransform(90+x, MatrixOrder.Append);
g.TranslateTransform(200, 200, MatrixOrder.Append);
g.DrawEllipse(p, r);
g.ResetTransform();
g.RotateTransform(0 + x, MatrixOrder.Append);
g.TranslateTransform(200, 200, MatrixOrder.Append);
g.DrawEllipse(p, r);
g.ResetTransform();
x++;
}
}
}
Контрольный пример:
Образец главной формы проекта:
Результат работы кнопки Рисунок:
Результат работы таймера: