Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчёт по лабораторным.docx
Скачиваний:
0
Добавлен:
18.11.2022
Размер:
553.87 Кб
Скачать

Лабораторная работа №9

Задание:

1. Создать проект из трех форм.

2. Нанести на главную форму меню из одного пункта Цвет и трех подпунктов – Обычная раскраска, Простая градиентная раскраска, Сложная градиентная раскраска.

3. При выборе пункта Обычная раскраска обеспечить вывод на экран диалогового окна выбора цвета. При выборе пользователем какого либо цвета окрасить им главную форму.

4. На второй форме дать пользователю возможность выбора параметров простой градиентной раскраски – стартового и конечного цветов, направления раскраски. Также с помощью флажка дать пользователю возможность задать режим смены цветов градиента (когда стартовый и конечный цвет меняются местами).

5. На основании параметров градиентной раскраски обеспечить окрашивание главной формы. Если пользователь задал режим смены цветов, то реализовать его.

6. На третьей форме дат пользователю возможность выбора параметров градиентной раскраски на основе прямоугольника: центрального цвета и четырех угловых цветов. Также с помощью флажка дать пользователю возможность задать режим смены угловых цветов градиента (когда четыре цвета чередуются через равные промежутки времени).

7. На основании параметров сложной градиентной раскраски обеспечить окрашивание главной формы. Если пользователь задал режим смены цветов, то реализовать его.

8. Во всех случаях предусмотреть возможность изменения размеров формы.

Текст программы:

Главная форма проекта:

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 Компьютерная_графика__9

{

public partial class Form1 : Form

{

Form2 frm2 = (Form2)ActiveForm;

public Graphics g;

public LinearGradientBrush lr;

public LinearGradientBrush lr1;

public int gr = 0;

public PathGradientBrush pg;

public PathGradientBrush pg1;

public PathGradientBrush pg2;

public PathGradientBrush pg3;

public Form1()

{

InitializeComponent();

g = this.CreateGraphics();

}

private void обычнаяРаскраскаToolStripMenuItem_Click(object sender, EventArgs e)

{

colorDialog1.ShowDialog();

this.BackColor = colorDialog1.Color;

}

private void простаяГрадиентнаяРаскраскаToolStripMenuItem_Click(object sender, EventArgs e)

{

Form f2 = new Form2();

f2.Show();

}

private void timer1_Tick(object sender, EventArgs e)

{

if(gr==0)

{

g.FillRectangle(pg, 0, 0, this.Width, this.Height);

}

if(gr==1)

{

g.FillRectangle(pg1, 0, 0, this.Width, this.Height);

}

if(gr==2)

{

g.FillRectangle(pg2, 0, 0, this.Width, this.Height);

}

if(gr==3)

{

g.FillRectangle(pg3, 0, 0, this.Width, this.Height);

}

if(gr>3)

{

gr = -1;

}

gr++;

}

private void сложнаяГрадиентнаяРаскраскаToolStripMenuItem_Click(object sender, EventArgs e)

{

Form f3 = new Form3();

f3.Show();

}

}

}

Форма Form2:

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 Компьютерная_графика__9

{

public partial class Form2 : Form

{

Form1 frm = (Form1)ActiveForm;

Graphics g;

SolidBrush b1 = new SolidBrush(Color.Red);

SolidBrush b2 = new SolidBrush(Color.Red);

Rectangle rc = new Rectangle(10, 10, 10, 10);

LinearGradientBrush lb;

LinearGradientBrush lb1;

public Form2()

{

InitializeComponent();

g = this.CreateGraphics();

}

private void button1_Click(object sender, EventArgs e)

{

colorDialog1.ShowDialog();

b1.Color = colorDialog1.Color;

Rectangle r = new Rectangle(50, 40, 50, 50);

g.FillRectangle(b1, r);

}

private void button2_Click(object sender, EventArgs e)

{

colorDialog1.ShowDialog();

b2.Color = colorDialog1.Color;

Rectangle r = new Rectangle(150, 40, 50, 50);

g.FillRectangle(b2, r);

}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

{

switch (comboBox1.SelectedIndex)

{

case 0:

lb = new LinearGradientBrush(rc, b1.Color, b2.Color, LinearGradientMode.BackwardDiagonal);

lb1 = new LinearGradientBrush(rc, b2.Color, b1.Color, LinearGradientMode.BackwardDiagonal);

frm.lr = lb;

frm.lr1 = lb1;

break;

case 1:

lb = new LinearGradientBrush(rc, b1.Color, b2.Color, LinearGradientMode.ForwardDiagonal);

lb1 = new LinearGradientBrush(rc, b2.Color, b1.Color, LinearGradientMode.ForwardDiagonal);

frm.lr = lb;

frm.lr1 = lb1;

break;

case 2:

lb = new LinearGradientBrush(rc, b1.Color, b2.Color, LinearGradientMode.Horizontal);

lb1 = new LinearGradientBrush(rc, b2.Color, b1.Color, LinearGradientMode.Horizontal);

frm.lr = lb;

frm.lr1 = lb1;

break;

case 3:

lb = new LinearGradientBrush(rc, b1.Color, b2.Color, LinearGradientMode.Vertical);

lb1 = new LinearGradientBrush(rc, b2.Color, b1.Color, LinearGradientMode.Vertical);

frm.lr = lb;

frm.lr1 = lb1;

break;

}

}

private void checkBox1_CheckedChanged(object sender, EventArgs e)

{

if (checkBox1.Checked == true)

{

frm.g.FillRectangle(frm.lr1, 0, 0, frm.Width, frm.Height);

}

else

{

frm.g.FillRectangle(frm.lr, 0, 0, frm.Width, frm.Height);

}

}

}

}

Форма Form3:

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 Компьютерная_графика__9

{

public partial class Form3 : Form

{

Graphics g;

Form1 frm = (Form1)ActiveForm;

GraphicsPath gp = new GraphicsPath();

PathGradientBrush pgb;

PathGradientBrush pgb1;

PathGradientBrush pgb2;

PathGradientBrush pgb3;

SolidBrush b1 = new SolidBrush(Color.Red);

SolidBrush b2 = new SolidBrush(Color.Red);

SolidBrush b3 = new SolidBrush(Color.Red);

SolidBrush b4 = new SolidBrush(Color.Red);

SolidBrush b5 = new SolidBrush(Color.Red);

public Form3()

{

InitializeComponent();

g = this.CreateGraphics();

}

private void button1_Click(object sender, EventArgs e)

{

colorDialog1.ShowDialog();

b1.Color = colorDialog1.Color;

Rectangle r = new Rectangle(155, 38, 100, 100);

g.FillRectangle(b1, r);

}

private void button4_Click(object sender, EventArgs e)

{

colorDialog1.ShowDialog();

b3.Color = colorDialog1.Color;

Rectangle r = new Rectangle(230, 38, 25, 25);

g.FillRectangle(b3, r);

}

private void button2_Click(object sender, EventArgs e)

{

colorDialog1.ShowDialog();

b2.Color = colorDialog1.Color;

Rectangle r = new Rectangle(155, 38, 25, 25);

g.FillRectangle(b2, r);

}

private void button3_Click(object sender, EventArgs e)

{

colorDialog1.ShowDialog();

b4.Color = colorDialog1.Color;

Rectangle r = new Rectangle(230, 105, 25, 25);

g.FillRectangle(b4, r);

}

private void button5_Click(object sender, EventArgs e)

{

colorDialog1.ShowDialog();

b5.Color = colorDialog1.Color;

Rectangle r = new Rectangle(155, 105, 25, 25);

g.FillRectangle(b5, r);

}

private void checkBox1_CheckedChanged(object sender, EventArgs e)

{

if (checkBox1.Checked == true)

{

frm.g.Clear(BackColor);

Rectangle rc = new Rectangle(0, 0, frm.Width, frm.Height);

gp.AddRectangle(rc);

pgb = new PathGradientBrush(gp);

pgb1 = new PathGradientBrush(gp);

pgb2 = new PathGradientBrush(gp);

pgb3 = new PathGradientBrush(gp);

Color[] c = { b2.Color, b3.Color, b4.Color, b5.Color };

Color[] c1 = { b5.Color, b4.Color, b2.Color, b3.Color };

Color[] c2 = { b3.Color, b2.Color, b5.Color, b4.Color };

Color[] c3 = { b4.Color, b5.Color, b3.Color, b2.Color };

pgb.SurroundColors = c;

pgb1.SurroundColors = c1;

pgb2.SurroundColors = c2;

pgb3.SurroundColors = c3;

pgb.CenterColor = b1.Color;

pgb1.CenterColor = b1.Color;

pgb2.CenterColor = b1.Color;

pgb3.CenterColor = b1.Color;

frm.pg = pgb;

frm.pg1 = pgb1;

frm.pg2 = pgb2;

frm.pg3 = pgb3;

frm.timer1.Start();

}

else

{

frm.g.Clear(BackColor);

frm.timer1.Stop();

frm.g.FillRectangle(frm.pg, 0, 0, frm.Width, frm.Height);

}

}

}

}

Контрольный пример:

Образец главной формы проекта:

Результат работы пункта меню Обычная раскраска:

Форма Form2:

Результат окрашивания главной формы:

Форма Form3:

Результат окрашивания главной формы: