Контрол Graphics позволяет строить графики функций по заданным уравнениям. Основной особенностью контрола является то, что каждый график можно нарисовать в своем масштабе. А также можно добавлять неограниченное число осей x и y.
Итак начнем с графиков. Чтобы добавить график используйте метод AddGraphic [GraphicName]. Этот метод добавляет новый график в коллекцию графиков. Значение GraphicName определяет имя графика, по которому к нему можно будет обратиться. Если оно не задано, значит к графику можно будет обратиться только по его порядковому номеру - индексу. Порядковый номер начинается с единицы.
Обратиться к графику можно через набор Graphic(GraphicName). GraphicName - имя графика или его порядковый номер в коллекции графиков.
Процедура GraphicScale (xLeft, yBottom, xRight ,yTop) позволяет задать границы виртуального окна для графика, иначе говоря, его масштаб. Так как в математических координатах точка отсчета находится в левом нижнем углу, то yTop>yBottom:
' Добавляем новый график
Graphics1.AddGraphic "G1"
' Задаем масштаб
Graphics1.Graphic("G1").GraphicScale 0, 0, 10, 10
' Так как график в данном случае
' первый по счету, то аналогично
' можно записать
' Graphics1.Graphic(1).GraphicScale 0, 0, 10, 10
По умолчанию масштаб каждого нового графика (-10,-10,10,10).
Также изменить масштаб можно используя свойства ScaleLeft, ScaleTop, ScaleRight, ScaleBottom набора Graphic.
Свойство Color набора Graphic определяет цвет графика, а свойство Formula - формулу, по которой строится график. За аргумент функции нужно указывать переменную x:
Graphics1.AddGraphic
Graphics1.Graphic(1).Color = vbRed
Graphics1.Graphic(1).Formula = "x*x"
Число графиков определяется свойством GraphicsCount. Например, задать для всех графиков синий цвет можно следующим образом:
Dim i As Integer
For i = 1 To Graphics1.GraphicsCount
Graphics1.Graphic(i).Color = vbBlue
Next
Для удаления графика используйте DeleteGraphic(GraphicName).
Теперь перейдем к осям. Для более гибкой работы с графиками оси не привязаны к самим графикам. Таким образом, число и масштаб осей задаются отдельно. Работа с осями x и y одинакова, поэтому я рассмотрю только работу с осью x.
AddAxisX(ScaleLeft, ScaleRight, dx, [GraphicName]) добавляет новую ось x в коллецию осей. ScaleLeft, ScaleRight определяют масштаб оси, dx - цена деления. Параметр GraphicName позволяет выбрать масштаб в соответствии с указанным графиком. Если этот параметр указан, то параметры ScaleLeft и ScaleRight игнорируются:
' Добавляем график
Graphics1.AddGraphic "G1"
' Добавляем ось x с указанным масштабом
Graphics1.AddAxisX -20, 20, 10
' Добавляем ось x с масштабом, соответствующим
' графику "G1"
Graphics1.AddAxisX 0, 0, 5, "G1"
Обратиться к оси x можно через набор AxisX.
' Добавляем ось x
Graphics1.AddAxisX -20, 20, 10
' Изменяем ее масштаб
Graphics1.AxisX(1).ScaleLeft = -10
Graphics1.AxisX(1).ScaleRight = 10
Graphics1.AxisX(1).dx = 2
Самая верхняя ось x, т.е. самая ближняя к графику, соответствует первому элементу набора AxisX. Чем выше индекс оси в наборе, тем ниже лежит ось на графике.
Процедура SetScaleAsGraphic(GraphicName) набора AxisX выбирает масштаб оси в соответствии с указанным графиком.
Свойство Label набора AxisX определяет название оси на графике.
Свойство TextFormat определяет формат подписей к осям. Например:
Graphics1.AxisX(1).TextFormat = "0.00"
Округляет подписи до сотых долей.
Число осей x определяется свойством AxisXCount.
Чтобы удалить ось используйте DeleteAxisX(Index).
Перейдем к сетке. Свойства FrameVisible и GridVisible позволяют отобразить соответственно рамку вокруг графика и сетку.
Процедура GridScale(xLeft, yBottom, xRight, yTop, dx, dy) позволяет задать масштаб и цену деления сетки. По умолчанию принимается (-10,-10,10,10,1,1). Аналогично масштаб и цену деления можно задать параметрами GridScaleLeft, GridScaleTop, GridScaleRight, GridScaleBottom, Griddx, Griddy. Также можно установить масштаб сетки в соответствии с масштабом первых двух осей x,y процедурой SetGridScaleAsFirstAxis. Предполагается, что оси существуют.
И, наконец, свойство AutoDraw. Если AutoDraw = True, то графики автоматически перерисовывается при изменении параметров графиков или осей (например, при изменении цвета графика, масштаба и т.д.). Однако если нужно нарисовать подряд много графиков, то это может замедлить ход программы. В этом случае целесообразно задать AutoDraw = False. Тогда вывести графики на экран можно командой DrawGraphics. Также автоматическая перерисовка графиков произойдет при изменении размера контрола независимо от свойства AutoDraw.