Сохранение изображений из элемента управления PictureBox
Для сохранения изображений используется метод Save объекта Image, являющегося свойством объекта PictureBox. По умолчанию изображение сохраняется в формате .BMP, например:
Visual Basic .Net:
PictureBox1.Image.Save("C:\MyProject\f1.bmp")
Visual C#:
pictureBox1.Image.Save("C:\\MyProject\\f1.bmp");
Имя файла необходимо указывать полностью. Для выбора имени файла можно использовать элемент управления SaveFileDialog.
Если необходимо сохранить данные в другом графическом формате, то в данный метод добавляется второй аргумент, определяющий формат. Этот формат является одним из членов перечисления ImageFormat, которое принадлежит классу System.Drawing.Imaging. Этот класс необходимо импортировать в проект или записывать полное имя перечисления, например:
Векторная графика создаётся с помощью интерфейса для создания графики – GDI (Graphic Design Interface).
GDI – это графическое ядро Windows, в Visual Studio .Net содержится его последняя версия, называемая GDI+, оно используется во всех языках .Net. Одной из важнейших особенностей GDI+ является то, что это графическое ядро не сохраняет информацию о своём состоянии, т.е. каждая следующая операция осуществляется независимо от предыдущей. Например, если нужно нарисовать два отрезка прямой, то второй отрезок не будет автоматически нарисован в том же формате, что и первый.
Объекты GDI+ располагаются в нескольких классах, которые предварительно необходимо импортировать в свой проект. Важнейшим классом является класс System.Drawing, который подключается по умолчанию. К другим классам относятся System.Drawing.Drawing2D, System.Drawing.Imaging и System.Drawing.Text, которые необходимо импортировать в свой проект. Существуют базовые объекты рисования, которые определяют параметры рисунков – цвет, расположение, толщину линии и др., а также специальные объекты для рисования конкретных фигур.
Базовые графические объекты обязательно используются при создании векторной графики. Самым важным объектом является объект Graphics, представляющий собой поверхность для рисования. У каждого элемента, на котором можно рисовать, имеется свойство Graphics, возвращающее объект Graphics. Объект Graphics представляет собой набор методов, необходимых для рисования на поверхности элемента управления. Для создания объекта Graphics, связанного с конкретным элементом управления, необходимо вызвать метод СreateGraphics. Чаще всего рисование осуществляется на форме, для этого необходимо записать код:
Visual Basic .Net:
Dim g As Graphics
g = Me.CreateGraphics
Visual C#:
Graphics g;
g = this.CreateGraphics();
Для элемента управления, например, для кнопки, код будет следующим:
Visual Basic .Net:
Dim g As Graphics
g = Button1.CreateGraphics
Visual C#:
Graphics g;
g = button1.CreateGraphics();
Чаше всего рисование осуществляется на форме.
Все размеры выводимых на объекте Graphics изображений по умолчанию измеряются в пикселях. Если необходимо сменить единицу измерения, то можно воспользоваться свойствомPageUnit объекта Graphics, например (хотя это используется очень редко):
Visual Basic .Net:
g.PageUnit = GraphicsUnit.Millimeter
Visual C#:
g.PageUnit = GraphicsUnit.Millimeter;
Двумя важнейшими инструментами для рисования являются перо (Pen) и кисть (Brush).
С помощью перьев рисуют геометрические фигуры, состоящие из линий (контуры) – прямые, кривые, прямоугольные и др. Важнейшими характеристиками объекта Pen являются цвет и толщина линии, оставляемые пером при рисовании. Цвет определяется объектом Color, толщина линии задается в пикселях, например, для создания красного пера толщиной в три пикселя необходимо написать код:
Visual Basic .Net:
Dim redpen As Pen
redpen = New Pen(Color.Red, 3)
Visual C#:
Pen redpen;
redpen = new Pen(Color.Red, 3);
Если толщина линии опущена, то по умолчанию она равна 1 пикселю.
Кистями рисуют заполненные фигуры. Главными характеристиками кисти являются цвет и образец заполнения фигуры. Собственно говоря, в чистом виде объекта Brush не существует, т.к. это абстрактный класс, наследуемый кистями различных типов.
Основными кистями являются:
SolidBrush(принадлежит классу Drawing) – заполняет фигуру одним цветом, который определяется объектом Color, например:
Visual Basic .Net:
Dim redbrush As SolidBrush
redbrush = New SolidBrush(Color.Red)
Visual C#:
SolidBrush redbrush;
redbrush = new SolidBrush(Color.Red);
HatchBrush (принадлежит классу Drawing2d) – заполняет фигуру шаблоном из штрихов, задаётся способом штриховки и двумя объектами Color – цветом линий и цветом фона, например:
Visual Basic .Net:
Dim hbrush As HatchBrush
hbrush = New HatchBrush(HatchStyle.DarkVertical, Color.Black, Color.Red)
Visual C#:
HatchBrush hbrush;
hbrush = new HatchBrush(HatchStyle.DarkVertical, Color.Black, Color.Red);
Кроме этого, существуют градиентные и текстурные кисти. Градиентные заполняют фигуру переходом цветов, а текстурные – цветом, созданным на основе растрового изображения.
Для определения координат рисованных объектов используется объект Point, представляющий собой точку на рабочей поверхности, определяемую парой координат (х и y). Отсчёт начала координат (точка (0,0) идёт от левого верхнего угла объекта (формы и др.). Для создания нового объекта Point необходимо указать его координаты, представленные свойствами X и Y, например:
Visual Basic .Net:
Dim p1 As Point
p1 = New Point(10, 20)
Visual C#:
Point p1;
p1 = new Point(10, 20);
или
Visual Basic .Net:
Dim p1 As Point
p1.X = 100
p1.Y = 200
Visual C#:
Point p1;
p1.X = 100;
p1.Y = 200;
Координаты измеряются в пикселях и имеют тип Integer. Если используются единицы измерения, отличные от пикселей, то координаты могут иметь тип Single, а вместо объекта Point используется объект PointF.