Лабораторная работа №6
Задание:
1. Дополнить таблицу Client базы данных продажи полем Foto типа OLE для помещения туда фотографий клиентов.
2. Заполнить данное поле с помощью графических файлов.
3. Создать проект из одной формы.
4. Создать программу, позволяющую просматривать, изменять и добавлять данные в таблицу Client. Просмотр обычных данных осуществляется в элементах типа TextBox, фотографии клиентов отображаются в элементе PictureBox. Способ навигации по записям может быть любым.
5. Обеспечить возможность изменения данных в поле Foto (выбор файла с изображением) с помощью двойного щелчка мышью по элементу PictureBox.
6. Обеспечить возможность изменения размеров формы.
7. Обеспечить подбор оптимальных размеров элемента PictureBox.
Текст программы:
Главная форма проекта:
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.IO;
namespace Компьютерная_графика__6
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void clientBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
this.Validate();
this.clientBindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this.sale1DataSet);
}
private void Form1_Load(object sender, EventArgs e)
{
// TODO: данная строка кода позволяет загрузить данные в таблицу "sale1DataSet.client". При необходимости она может быть перемещена или удалена.
this.clientTableAdapter.Fill(this.sale1DataSet.client);
}
private void fotoPictureBox_DoubleClick(object sender, EventArgs e)
{
OpenFileDialog op = new OpenFileDialog();
op.Filter = "Изображения|*.png";
if (op.ShowDialog() == DialogResult.OK)
{
fotoPictureBox.Image = Image.FromFile(op.FileName);
}
}
}
}
Контрольный пример:
Образец главной формы проекта:
Результат изменения картинки:
Лабораторная работа №7
Задание:
1. Создать проект из двух форм.
2. Нанести на главную форму меню из одного пункта «Параметры градиента» и одну кнопку с надписью: «Старт/Пауза».
3. Присвоить второй форме заголовок «Параметры градиента».
4. На вторую форму нанести две кнопки с надписями: «Стартовый цвет» и «Конечный цвет», а также элемент ComboBox и Label с надписью: «Параметры заполнения», а также две кнопки с надписями «OK» и «Отмена».
5. Нанести на вторую форму элемент типа ColorDialog.
6. При нажатии на кнопку «Стартовый цвет» обеспечить вызов диалогового окна выбора цвета. В случае выбора пользователем какого-либо цвета нарисовать рядом с кнопкой квадрат выбранного цвета.
7. Аналогичным образом написать обработчик события нажатия кнопки «Конечный цвет».
8. Занести в элемент ComboBox пункты «От правого верхнего к левому нижнему углу», «От левого верхнего к правому нижнему углу», «Слева направо», «Сверху вниз».
9. При нажатии на кнопку OK обеспечить возврат на главную форму с сохранением параметров выбранных двух цветов и параметров заполнения, при нажатии на кнопку «Отмена» обеспечить возврат на главную форму без сохранения указанных параметров.
10. На главной форме при нажатии кнопки «Старт/Пауза» создать линейную градиентную кисть с выбранными на второй форме параметрами.
11. Нарисовать с помощью этой кисти на форме квадрат размером 150х150 с координатами вершины (100,100).
12. Обеспечить вращение данного квадрата вокруг центра с шагом 1 градус и одновременное его сжатие до размеров (0,0), а по достижении минимальных размеров – расширение до исходных (150,150) с шагом 1. 13. Обеспечить возможность изменения размеров формы.
Текст программы:
Главная форма проекта:
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 Компьютерная_графика__7
{
public partial class Form1 : Form
{
Graphics g;
public LinearGradientBrush lr;
int x = 1;
int t = 0;
Matrix m = new Matrix();
public Form1()
{
InitializeComponent();
g = this.CreateGraphics();
}
private void параметрыГрадиентаToolStripMenuItem_Click(object sender, EventArgs e)
{
Form f2 = new Form2();
f2.Show();
}
private void button1_Click(object sender, EventArgs e)
{
switch (t)
{
case 0:
timer1.Start();
t = 1;
break;
case 1:
timer1.Stop();
t = 0;
break;
case 2:
timer2.Stop();
t = 3;
break;
case 3:
timer2.Start();
t = 2;
break;
}
}
private void timer1_Tick(object sender, EventArgs e)
{
g.Clear(BackColor);
Rectangle r = new Rectangle(100, 100, 150 - x, 150 - x);
m.RotateAt(1, new PointF(160, 160));
g.Transform = m;
g.FillRectangle(lr, r);
x++;
if (x == 150)
{
timer1.Stop();
timer2.Start();
x = 1;
t = 2;
}
}
private void timer2_Tick(object sender, EventArgs e)
{
g.Clear(BackColor);
Rectangle r = new Rectangle(100, 100, 0+x, 0+x);
m.RotateAt(1, new PointF(160, 160));
g.Transform = m;
g.FillRectangle(lr, r);
x++;
{
if (x == 150)
{
timer2.Stop();
timer1.Start();
x = 1;
t = 1;
}
}
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.Transform = m;
}
}
}
Форма Параметры градиента:
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 Компьютерная_графика__7
{
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;
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 button4_Click(object sender, EventArgs e)
{
this.Close();
}
private void button3_Click(object sender, EventArgs e)
{
frm.lr = lb;
this.Close();
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
switch(comboBox1.SelectedIndex)
{
case 0:
lb = new LinearGradientBrush(rc, b1.Color, b2.Color, LinearGradientMode.BackwardDiagonal);
break;
case 1:
lb = new LinearGradientBrush(rc, b1.Color, b2.Color, LinearGradientMode.ForwardDiagonal);
break;
case 2:
lb = new LinearGradientBrush(rc, b1.Color, b2.Color, LinearGradientMode.Horizontal);
break;
case 3:
lb = new LinearGradientBrush(rc, b1.Color, b2.Color, LinearGradientMode.Vertical);
break;
}
}
}
}
Контрольный пример:
Образец главной формы проекта:
Форма Параметры градиента:
Результат работы таймера: