Міністерство освіти і науки України
Кіровоградський національний технічний університет
Кафедра програмування та захисту інформації
Дисципліна : Візуальне програмування
Лабораторна робота №6
Тема: Робота з графікою
Тема: Робота з графікою
Мета: Навчитися реалізувати необхідні класи графічних об'єктів
Завдання до лабораторної роботи:
Намалювати у вікні Windows-додатку, методами бібліотеки System.Drawing.dll, наступні об’єкти:
- прямокутник, залитий суцільним пензлем;
- еліпс, залитий суцільним пензлем із границею;
- коло, залите суцільним пензлем із границею;
- будиночок, залитий суцільною кистю із границею (висота даху не менше 50 пікселів);
- заштрихований будиночок;
- коло, зафарбоване чорно-білими квадратами;
- квітку, що складається з жовтого кола та блакитних еліпсів;
- конверт, залитий суцільною кистю із границею (висота кришки конверта не менше 30 пікселів, відношення ширини до висоти 5 до 3, ширина кратна 5);
- заштрихований конверт.
Код
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
namespace lab6visual
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Draw();
}
private void Draw()
{
Bitmap bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height);
Graphics graph = Graphics.FromImage(bmp);
Pen pen = new Pen(Color.OrangeRed);
SolidBrush brush = new SolidBrush(Color.Blue);
HatchBrush brush2 = new HatchBrush(
HatchStyle.Horizontal,
Color.Green,
Color.White);
HatchBrush brush3 = new HatchBrush(
HatchStyle.LargeCheckerBoard,
Color.White);
int x = 5, y = 5;
graph.FillEllipse(brush, 200, 10, 150, 75);
graph.DrawEllipse(pen, 200, 10, 150, 75);
graph.FillRectangle(brush, 10, 10, 150, 75);
graph.FillEllipse(brush3, 400, 10, 75, 75);
Point point = new Point(x, y);
Point pt3 = new Point(620, 20);
Point pt1 = new Point(520, 200);
Point pt2 = new Point(520, 100);
Point pt4 = new Point(720, 100);
Point pt5 = new Point(720, 200);
Point[] house = new Point[] { pt5, pt1, pt2, pt3, pt4};
GraphicsPath path = new GraphicsPath();
graph.FillEllipse(new SolidBrush(Color.Red), 200, 315, 75, 100);
graph.FillEllipse(new SolidBrush(Color.Red), 200, 450, 75, 100);
graph.FillEllipse(new SolidBrush(Color.Red), 225, 400, 100, 75);
graph.FillEllipse(new SolidBrush(Color.Red), 150, 400, 100, 75);
graph.FillEllipse(new SolidBrush(Color.GreenYellow), 200, 400, 75, 75);
Point pt32 = new Point(670, 250);
Point pt12 = new Point(520, 400);
Point pt22 = new Point(520, 300);
Point pt42 = new Point(820, 300);
Point pt52 = new Point(820, 400);
Point pt31 = new Point(900, 20);
Point pt11 = new Point(800, 200);
Point pt21 = new Point(800, 100);
Point pt41 = new Point(1000, 100);
Point pt51 = new Point(1000, 200);
GraphicsPath path1 = new GraphicsPath();
path1.AddLine(pt11, pt21);
path1.AddLine(pt31, pt41);
path1.AddLine(pt51, pt11);
graph.FillPath(brush2, path1);
path.AddLine(pt1, pt2);
path.AddLine(pt3, pt4);
path.AddLine(pt5, pt1);
graph.FillPath(brush, path);
graph.DrawPath(pen, path);
GraphicsPath path2 = new GraphicsPath();
path2.AddLine(pt12, pt22);
path2.AddLine(pt32, pt42);
path2.AddLine(pt52, pt12);
path2.AddLine(pt12, pt42);
graph.FillPath(brush2, path2);
path2.AddLine(pt22, pt32);
path2.AddLine(pt22, pt52);
graph.FillPath(brush2, path2);
graph.DrawPath(new Pen(Color.Black), path2);
pictureBox1.Image = bmp;
}
private void pictureBox1_Click(object sender, EventArgs e)
{
}}}
Контрольні запитання:
1. В який бібліотеці С# розташовані засоби роботи з графікою? System.Drawing.dll
2. Які основні поняття включає в себе малювання в С#?
перо (Pen) для малювання ліній,
колір (Color),
пензель (Brush) для заливання областей,
шрифт (Font) для відображення тексту,
точка (Point),
розмір (Size),
прямокутник (Rectangle),
контур (GraphicsPath).
3. Для чого служить інструмент Пензель? Для того щоб виконувати зафарбовування фігур.
4. Яким чином можна намалювати прямокутник? g.DrawRectangle(pen, rect);
5. Яким чином можна намалювати еліпс? g.DrawEllipse(pen, rect);