# Классы, включенные в библиотеку VFPGDIPLUS

## Класс GdipImages

Класс предназначен для работы с изображениями и рисования различных графических примитивов и текстовых строк средствами GDI+.

Создание объекта — экземпляра класса:

     oGP = CREATEOBJECT("GdipImages" [, lGdipInit])

Необязательный параметр логического типа lGdipInit определяет необходимость инициализации среды GDIPlus. Если его значение «истина», то GDIPlus инициализируется.

### Свойства

InterpolationMode
Определяет режим интерполяции. Может принимать значения в интервале от 0 до 7.

JpegQuality
Определяет значение качества при сохранении изображения в формате JPEG. Может принимать значения в интервале от 20 до 90.

### Методы

ARGB
Преобразует значение цвета, возвращаемое функций RGB(), в формат, используемый в GDIPlus.

     nGdipColor = oGP.ARGB(RGB(Red, Green, Blue) [, Alpha])

Параметры:

Red, Green, Blue ― значения цветовых компонент
Alpha ― значение прозрачности (от 0 до 255; 0 - полностью прозрачный; 255 - полностью непрозрачный); если параметр опущен, то подразумевается значение 255

ClipImage
Вырезает из изображения заданную прямоугольную область и либо копирует ее в файл, либо замещает ею исходное изображение.

     lReturn = oGP.ClipImage(Left, Top, Width, Height [, cOutputFileName])

Параметры:

Left, Top ― кординаты левой верхней точки фрагмента изображения
Width, Height ― ширина и высота фрагмента изображения
cOutputFileName ― (необязательный) имя и тип файла для сохранения изображения

Если параметр cOutputFileName опущен, то фрагмент замещает исходный образ изображения

CopyFromClipboard
Копирует растр из буфера обмена Windows в память.

     lReturn = oGP.CopyFromClipboard()

CopyToClipboard
Копирует изображение из памяти в буфер обмена Windows.

     lReturn = oGP.CopyToClipboard()

CreateBitmap
Создает растр указанного размера и заливает его заданным цветом.

     lReturn = oGP.CreateBitmap(width, height [, color])

Параметры:

width, height ― размеры создаваемого растра
color ― цвет растра (в формате, возвращаемом методом ARGB)

CreateFont
Создает шрифт заданной высоты и стиля по его имени.

     lReturn = oGP.CreateFont(FontName, width [, style])

Параметры:

FontName ― наименование шрифта (например, Arial)
width ― высота шрифта (вещественное значение, в зависимости от установленной единицы измерения)
style ― стиль шрифта (0 - нормальный, 1 - курсив и т.д.)

CreateGradientBrush
Создает линейную градиентную кисть.

     lReturn = oGP.CreateGradientBrush(@PointArray [, WrapMode][, Mode])

Параметры:

PointArray ― массив точек, определяющих вид градиентной кисти; если параметр Mode указан, то массив содержит четыре точки, определяющий кисть в виде прямоугольной области; иначе PointArray содержит две точки, определяющих направление изменения цвета кисти.
WrapMode ― (необязательный) может принимать значение от 0 до 3; устанавливает эффект перетекания цвета кисти
Mode ― (необязательный) может принимать значения от 0 до 3; определение направление изменения цвета для кисти, заданной прямоугольником

CreateHatchBrush
Создает штриховую кисть.

     lReturn = oGP.CreateHatchBrush([Style][, ForeColor][, BackColor])

Параметры:

Style ― (необязательный) определяет стиль штриховой кисти; принимает значения от 0 до 52. Если параметр опущен, то применяется стиль 2 (косая штриховка)
ForeColor ― (необязательный) определяет цвет фона в формате, возвращаемом методом ARGB; если параметр опущен, то применяется белый цвет
BackColor ― (необязательный) определяет цвет штриха кисти в формате, возвращаемом методом ARGB; если параметр опущен, то создаётся кисть чёрного цвета

CreatePen
Создает перо.

     lReturn = oGP.CreatePen(width [, color])

Параметры:

width ― толщина пера (вещественное значение, в зависимости от установленной единицы измерения)
color ― цвет пера в формате, возвращаемом методом ARGB; если параметр опущен, то создаётся перо чёрного цвета

CreateSolidBrush
Создает одноцветную кисть.

     lReturn = oGP.CreateSolidBrush(color)

Параметры:

color ― цвет кисти в формате, возвращаемом методом ARGB

CreateStringFormat
Создает объект StringFormat, управляющий форматированием текста.

     lReturn = oGP.CreateStringFormat([lDirect])

Параметры:

lDirect ― (необязательный) определяет направление вывода текста (если "истина", то текст выводится вертикально); если параметр опущен, то текст выводится горизонтально

CreateTextureBrush
Создает текстурированую кисть.

     lReturn = oGP.CreateTextureBrush(TextureFileName [, WrapMode])

Параметры:

TextureFileName ― имя и тип файла, используемого в качестве текстуры
WrapMode ― (необязательный) принимает значения от 0 до 3; определяет взаимное расположение текстур в случае, если размер текстуры меньше размера области рисования

DeleteBrush
Удаляет кисть.

     = oGP.DeleteBrush()

DeleteFont
Удаляет шрифт.

     = oGP.DeleteFont()

DeletePen
Удаляет перо.

     = oGP.DeletePen()

DeleteStringFormat
Удаляет объект StringFormat. После удаления этого объекта текст не форматируется.

     = oGP.DeleteStringFormat()

DrawClosedCurve, FillClosedCurve
Рисует (закрашивает) замкнутый сплайн.

     lReturn = oGP.DrawClosedCurve(@PointsArray [, ObjGraphics])
     lReturn = oGP.FillClosedCurve(@PointsArray [, ObjGraphics])

Параметры:

PointArray ― массив координат точек сплайна
ObjGraphics ― (необязательный) дескриптор объекта Graphics, связанного с устройством вывода; если параметр опущен, то рисование выполняется на текущем образе изображения

DrawCurve
Рисует сплайн.

     lReturn = oGP.DrawCurve(@PointsArray [, ObjGraphics])

Параметры:

PointArray ― массив координат точек сплайна
ObjGraphics ― (необязательный) дескриптор объекта Graphics, связанного с устройством вывода; если параметр опущен, то рисование выполняется на текущем образе изображения

DrawEllipse, FillEllipse
Рисует (закрашивает) эллипс (окружность).

     lReturn = oGP.DrawEllipse(x, y, Diameter, Diameter1 [, ObjGraphics])
     lReturn = oGP.FillEllipse(x, y, Diameter, Diameter1 [, ObjGraphics])

Параметры:

x, y ― координаты центра эллипса (окружности)
Diameter ― горизонтальный диаметр
Diameter1 ― вертикальный диаметр
ObjGraphics ― (необязательный) дескриптор объекта Graphics, связанного с устройством вывода; если параметр опущен, то рисование выполняется на текущем образе изображения

DrawImage
Рисует изображение на внешнем устройстве графического вывода или растре.

     lReturn = oGP.DrawImage(ObjGraphics, Left, Top [, Width, Height])

Параметры:

ObjGraphics ― дескриптор объекта Graphics, связанного с устройством вывода
Left, Top ― координаты верхней левой точки для рисования изображения
Width, Height ― (необязательные) определяют ширину и высоту изображения; если параметры опущены, то используются размеры исходного изображения

DrawImageFromFile
Рисует на растре изображение, считанное из файла.

     lReturn = oGP.DrawImageFromFile(FileName, Left, Top)

Параметры:

FileName ― имя и тип файла, изображение которого будет нарисовано на существующем образе изображения
Left, Top ― координаты верхней левой точки, от которой будет рисоваться изображение

DrawLine
Рисует линию по заданным координатам точек ее начала и конца.

     lReturn = oGP.DrawLine(x1, y1, x2, y2 [, ObjGraphics])

Параметры:

x1, y1 ― координаты начальной точки
x2, y2 ― координаты конечной точки
ObjGraphics ― (необязательный) дескриптор объекта Graphics, связанного с устройством вывода; если параметр опущен, то рисование выполняется на текущем образе изображения

DrawLines
Рисует ломаную линию по координатам, заданным в массиве точек координат.

     lReturn = oGP.DrawLines(@PointsArray [, ObjGraphics])

Параметры:

PointArray ― массив координат точек линии
ObjGraphics ― (необязательный) дескриптор объекта Graphics, связанного с устройством вывода; если параметр опущен, то рисование выполняется на текущем образе изображения

DrawPie
Рисует сектор или дугу.

     lReturn = oGP.DrawPie(x, y, Diameter, Diameter1, startAngle, sweepAngle [, ArcFlag][, ObjGraphics])

Параметры:

x, y ― координаты точки центра сектора (дуги)
Diameter ― горизонтальный диаметр
Diameter1 ― вертикальный диаметр
StartAngle ― вещественное значение, определяет начальный угол (в градусах)
SweepAngle ― вещественное значение, определяет угол сектора (дуги) (в градусах)
ArcFlag ― (необязательный) логическое значение; "ложь" определяет, что будет нарисован сектор
ObjGraphics ― (необязательный) дескриптор объекта Graphics, связанного с устройством вывода; если параметр опущен, то рисование выполняется на текущем образе изображения

FillPie
Закрашивает сектор.

     lReturn = oGP.DrawPie(x, y, Diameter, Diameter1, startAngle, sweepAngle [, ObjGraphics])

Параметры:

x, y ― координаты точки центра сектора (дуги)
Diameter ― горизонтальный диаметр
Diameter1 ― вертикальный диаметр
StartAngle ― вещественное значение, определяет начальный угол (в градусах)
SweepAngle ― вещественное значение, определяет угол сектора (дуги) (в градусах)
ObjGraphics ― (необязательный) дескриптор объекта Graphics, связанного с устройством вывода; если параметр опущен, то рисование выполняется на текущем образе изображения

DrawPolygon, FillPolygon
Рисует (закрашивает) многоугольник.

     lReturn = oGP.DrawPolygon(@PoinsArray [, ObjGraphics])
     lReturn = oGP.FillPolygon(@PoinsArray [, ObjGraphics])

Параметры:

PointArray ― массив координат точек многоугольника
ObjGraphics ― (необязательный) дескриптор объекта Graphics, связанного с устройством вывода; если параметр опущен, то рисование выполняется на текущем образе изображения

DrawRectangle, FillRectangle
Рисует (закрашивает) прямоугольник.

     lReturn = oGP.DrawRectangle(Left, Top, Width, Height [, ObjGraphics])
     lReturn = oGP.FillRectangle(Left, Top, Width, Height [, ObjGraphics])

Параметры:

Left, Top ― координаты левой верхней точки прямоугольника
Width, Height ― ширина и высота прямоугольника
ObjGraphics ― (необязательный) дескриптор объекта Graphics, связанного с устройством вывода; если параметр опущен, то рисование выполняется на текущем образе изображения

DrawRectangles, FillRectangles
Рисует (закрашивает) множество прямоугольников.

     lReturn = oGP.DrawRectangles(@PointsArray [, ObjGraphics])

Параметры:

PointArray ― массив координат точек прямоугольников
ObjGraphics ― (необязательный) дескриптор объекта Graphics, связанного с устройством вывода; если параметр опущен, то рисование выполняется на текущем образе изображения

DrawString
Рисует текстовую строку в заданной прямоугольной области.

     lReturn = oGP.DrawLine(Left, Top, Width, Height, TextString [, ObjGraphics])

Параметры:

Left, Top ― координаты левой верхней точки прямоугольной области
Width, Height ― ширина и высота прямоугольной области; если параметры равны нулю, текст рисуется в одну строку
TextString ― рисуемый текст
ObjGraphics ― (необязательный) дескриптор объекта Graphics, связанного с устройством вывода; если параметр опущен, то рисование выполняется на текущем образе изображения

Перед вызовом метода задайте необходимый шрифт, вызвав метод CreateFont, и, при необходимости, вызовите метод CreateStringFormat для задания направления вывода текста

FillImage
Заливает растр указанным цветом.

     lReturn = oGP.FillImage([Color])

Необязательный параметр Color задаёт цвет в формате, возвращаемом методом ARGB/.

GetImageResolution
Возвращает разрешение растра (dpi).

     lReturn = oGP.GetImageResolution(@HorDPI, @VertDPI)

Параметры (передаются по ссылке):

HorDPI ― вещественное значение; возвращает dpi по горизонтали
VertDPI ― вещественное значение; возвращает dpi по вертикали

GetImageSize
Возвращает размеры изображения.

     lReturn = oGP.GetImageSize(@Widtch, @Height)

В параметры Width и Height (передаются по ссылке) заносятся размеры изображения (в пикселях)

GetMeasureString
Вычисляет размеры строки.

     lReturn = oGP.GetMeasureString(String, @Width, @Height [, ObjGraphics])

Параметры:

String ― строка, размер которой необходимо определить
Width, Height ― ширина и высота прямоугольной области, в которой предполагается выводить строку; передаются по ссылке и заменяются на фактические значения
ObjGraphics ― (необязательный) дескриптор объекта Graphics, связанного с устройством вывода; если параметр опущен, то рисование выполняется на текущем образе изображения

GetRawFormat
Определяет графический формат файла (BMP, JPEG, GIF и т.д.).

     cFormatName = oGP.GetRawFormat()

GetStatus
Возвращает код состояния после выполнения метода класса. Положительные значения идентифицируют ошибки, возникшие при выполнении функций GDIPlus, отрицательные — добавленные нами в класс коды ошибок. Перечень ошибок приведен в таблицах 1 и 2. Если метод возвращает ноль, то ошибок не было.

     nStatusCode = oGP.GetStatus()

GraphicsFromImage
Создает объект Graphics, связанный с загруженным в память изображением.

     lReturn = oGP.GraphicsFromImage()

LoadFromFile
Загружает изображение из файла в память.

     lReturn = oGP.LoadFromFile(FileName)

Параметр FileName определяет имя и путь загружаемого файла

LoadFromField
Загружает изображение из поля таблицы или переменной Visual FoxPro.

     lReturn = oGP.LoadFromField(table.fieldname)
     или
     lReturn = oGP.LoadFromField(FoxVariable)

ResizeImage
Изменяет размеры изображения, либо сохраняя новое изображение в файле, либо замещая им исходное изображение.

     lReturn = oGP.ResizeImage(NewWidth, NewHeight [, OutputFileName])

Параметры:

NewWidth, NewHeight ― новые размеры изображения
OutputFileName ― (необязательный) имя файла для сохранения изображения; если параметр опущен, то новое изображение замещает существующее

RotateFlip
Выполняет отражения и повороты изображения на угол, кратный 90°.

     lReturn = oGP.RotateFlip(RotateFlipCode)

Параметр RotateFlipCode принимает значения от 0 до 7.

SaveToFileld
Сохраняет изображение в поле таблицы или переменной Visual FoxPro.

     Replace table.fieldname with oGP.SaveToField(GraphicsFormatName)
     или
     FoxVariable = oGP.SaveToField(GraphicsFormatName)

Параметр GraphicsFormatName содержит три символа и задаёт тип графического формата (BMP, JPG, GIF, TIF, PNG)

SaveToFile
Сохраняет изображение в файле.

     lReturn = oGP.SaveToFile(OutputFileName)

Параметр OutputFileName определяет имя и тип файла для сохранения изображения

SetColorGradient
Изменяет начальный и конечный цвета для существующей линейной градиентной кисти.

     lReturn = oGP.SetColorGragient(StartColor, EndColor)

Параметры StartColor и EndColor задают начальный и конечный цвета градиентной кисти в формате, возвращаемом методом ARGB

SetColorSolidBrush
Изменяет цвет существующей одноцветной кисти.

     lReturn = oGP.SetColorSolidBrush(NewColor)

Параметр NewColor задаёт новый цвет одноцветной кисти

SetPenColor
Изменяет цвет существующего пера.

     lReturn = oGP.SetPenColor(NewColor)

Параметр NewColor задаёт новый цвет пера

SetPenStyle
Изменяет стиль существующего пера.

     lReturn = oGP.SetPenStyle(StyleCode)

Параметр StyleCode определяет новый стиль пера

SetPenWidth
Изменяет толщину существующего пера.

     lReturn = oGP.SetPenWidth(Width)

Параметр Width определяет новую толщину пера

SetSmoothing
Устанавливает или отменяет антиаласинг при рисовании графических примитивов.

     lReturn = oGP.SetSmoothing(Flag [, ObjGraphics])

Параметры:

Flag ― значение логического типа; "истина" устанавливает применение алиасинга
ObjGraphics ― (необязательный) дескриптор объекта Graphics, связанного с устройством вывода; если параметр опущен, то рисование выполняется на текущем образе изображения

SetStringFormatParameter
Устанавливает режим выравнивания текста и направление вывода в заданной прямоугольной области.

     lReturn = oGP.SetStringFormatParameter(Align [, Direct])

Параметры:

Align ― принимает значения 0, 1 и 2; определяет выравнивание по левому краю (0), центрирование (1) или выравнивание по правому краю
Direct ― (необязательный) определяет направление вывода текста; значение "истина" предполагает вертикальный вывод

Перед использованием метода должен быть создан объект StringFormat (в методе CreateStringFormat)

SetTextRendering
Определяет качество рисования символов (например, можно установить режим Clear Type).

     lReturn = oGP.SetextRendering(mode [, ObjGraphics])

Параметры:

mode ― принимает значения от 0 до 5
ObjGraphics ― (необязательный) дескриптор объекта Graphics, связанного с устройством вывода; если параметр опущен, то рисование выполняется на текущем образе изображения

### Коды ошибок

Код ошибки, возникшей при выполнении метода класса, можно получить при помощи метода GetStatus.
Если GetStatus возвращает положительное число, то это означает, что ошибка возникла при выполнении функции GDI+. Коды этих ошибок перечислены в таблице 1.
Если GetStatus возвращает отрицательное число, то эта ошибка обнаружена методом. Коды этих ошибок приведены в таблице 2.

Таблица 1. Коды ошибок GDI+

Код ошибки | Обозначение | Описание
--- | --- | ---
0 | OK | Успешное завершение
1 | GenericError | При обращении к методу объекта GDI+ передаваемый параметр, имеющий предопределённые значения, имеет значение, не совпадающее с одним из значений преопределённого списка
2 | InvalidParameter | Недопустимое значение передаваемого параметра
3 | OutOfMemory | Недостаточно памяти для выполнения операции
4 | ObjectBusy | Объект занят и не может выполнить запрошенный метод
5 | InsufficientBuffer | Указывает, что размер буфера, передаваемого функции как параметр, недостаточен для размещения получаемых (возвращаемых) функцией данных. Возникает при неправильном занесении структуры в строковую переменную
6 | NotImplemented | Попытка обратиться к несуществующему методу объекта
7 | Win32Error | Метод сгенерировал исключение Windows
8 | WrongState | Объект GDI+ не может перейти в запрашиваемое состояние
9 | Aborted | Указывает, что выполнение метода было прервано
10 | FileNotFound | Указанный файл не был найден
11 | ValueOverflow | Указывает, что метод выполнил арифметическую операцию, которая привела к числовому переполнению
12 | AccessDenied | Невозможно использовать указанный файл для записи
13 | UnknownImageFormat | Невозможно определить графический формат изображения
14 | FontFamilyNotFound | Попытка использовать несуществующий шрифт
15 | FontStyleNotFound | Указан недопустимый стиль шрифта
16 | NotTrueTypeFont | Указывает, что шрифт, используемый в контексте устройства, не TrueType шрифт и не может использоваться в GDI+
17 | UnsupportedGdiplusVersion | Указывает, что версия GDI+, используемая операционной системой, не совместима с версией GDI+, с которой компилировалось приложение
18 | GdiplusNotInitialized | GDI+ не инициализирован
19 | PropertyNotFound | Запрошено несуществующее свойство объекта
20 | PropertyNotSupported | Запрошенное свойство не поддерживается в данном контексте

Таблица 2. Коды ошибок класса GdipImages

Код ошибки | Описание
--- | ---
-1 | Нет загруженного в память изображения
-2 | Невозможно создать поток для считывания изображения из поля таблицы или переменной Visual FoxPro
-3 | Ошибка при работе с буфером обмена Windows
-4 | Объект Graphics не существует
-5 | Перо не существует
-6 | Кисть не существует
-7 | В метод должен быть передан массив (по ссылке)
-8 | Недопустимое количество элементов переданного в функцию массива
-9 | Объект шрифта не существует
-10 | Объект StringFormat не существует
-11 | Изображение не имеет атрибутов DPI

## Класс GdipPrinter

Класс предназначен для печати изображений, графических примитивов и текстов на принтере

Создание объекта — экземпляра класса:

     oPrinter = CREATEOBJECT("GdipPrinter" [, PrinterName])

Если имя принтера опущено, то объект связывается с принтером, установленным по умолчанию.
Объект не имеет открытых свойств.

### Методы

CloseDocument
Закрывает документ принтера и отправляет его в очередь печати.

     lReturn = oPrinter,CloseDocument()

GetGraphics
Возвращает дескриптор объекта Graphics, связанного с принтером.

     nObjGraphics = oPrinter.etGraphics()

GetStatus
Возвращает код состояния после выполнения метода класса. Положительные значения идентифицируют ошибки, возникшие при выполнении функций GDI+, отрицательные — добавленные нами в класс коды ошибок. Перечень добавленных ошибок приведен в таблице 3. Если метод возвращает ноль, то ошибок не было.

     nStatus = oPrinter.GetStatus()

NewPage
Создает новую страницу в документе принтера.

     lReturn = oPrinter.NewPage()

OpenDocument
Открывает документ принтера.

     lReturn = oPrinter.OpenDocument([DocumentName])

Необязательный параметр DocumentName определяет имя документа, которое будет выводиться в окне просмотра очереди печати

SetPageUnit
Устанавливает единицу измерения для печати на принтере и возвращает размеры листа принтера в выбранных единицах.

     lReturn = oPrinter(FlagUnit, @WidthPage, @HeightPage)

Параметры:

FlagUnit ― логическое значение; "истина" определяет, что единицами измерения являются миллиметры, "ложь" ― пиксели
WidthPage, HeightPage ― в эти передаваемые по ссылке параметры заносятся значения размеров листа принтера для выбранной единицы измерения

### Коды ошибок

Код ошибки, возникшей при выполнении метода класса, можно получить при помощи метода GetStatus.
Если GetStatus возвращает положительное число, то это означает, что ошибка возникла при выполнении функции GDI+. Коды этих ошибок перечислены в таблице 1.
Если GetStatus возвращает отрицательное число, то эта ошибка обнаружена методом. Коды этих ошибок приведены в таблице 3.

Таблица 3. Коды ошибок класса GdipPrinter

Код ошибки | Описание
--- | ---
-1 | Нет открытого документа принтера
-2 | Не удалось создать страницу в документе принтера
-3 | Не удается корректно закрыть документ принтера

## Класс GdipWindow

Класс предназначен для поддержки рисования в окне.

Создание объекта — экземпляра класса:

     oWnd = CREATEOBJECT("GdipWindow", ObjForm)

При создании объекта ему передается ссылка на объект формы (thisform).
Для корректной работы класса форма должна иметь метод с именем ToDraw, в котором должен быть прописан код для рисования в окне формы.
Класс не имеет открытых свойств.
Единственный открытый метод класса, GetGraphics, возвращает дескриптор объекта Graphics, связанного с окном формы.