5.10. Графические возможности языка Visual Basic


На форме или в графическом поле можно рисовать различные графические примитивы с использованием графических методов:

Scale – позволяет задать систему координат и масштаб для формы или графического окна:

object.Scale (X1,Y1) - (X2,Y2)

Pset – установка точки с заданными координатами и цветом:

object.Pset (X,Y) [,color]

Line – рисование линии, прямоугольника или закрашенного прямоугольника заданного цвета:

object.Line (X1,Y1) - (X2,Y2) [,color][,B][F]

Circle – рисование окружности, овала или дуги с заданными координатами центра, радиусом, цветом, начальным и конечным углом дуги и коэффициентом сжатия:

object.Circle (X,Y),radius [,color, start, end, aspect]

Проект 5.12. «Графический редактор». Разработаем проект, который будет выполнять функции простого графического редактора, в котором в качестве поля для рисования будет использоваться графическое поле.

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

Проект «Графический редактор».

1

Разместить на форме графическое поле picPaint.

2

Разместить на форме кнопку cmdScale и создать  событийную процедуру установки системы координат (0 в левом нижнем углу поля, максимальные значения координат X и Y равны 100:

 

Private Sub cmdScale_Click()

picPaint.Scale (0, 100)-(100, 0)

End Sub

 

            Процедура установки точки. Координаты точки будем запрашивать с помощью функции ввода InputBox, а цвет зададим с помощью одной из восьми констант, определяющих цвет (vbBlack – черный, vbBlue – синий, vbGreen – зеленый,  vbCyan – голубой,  vbRed – красный,  vbMagenta – сиреневый,  vbYellow – желтый,  vbWhite - белый).

3

Разместить на форме кнопку cmdPoint и создать  событийную процедуру установки точки:

 

Private Sub cmdPoint_Click()

bytX1 = Val(InputBox("Введите координату Х", "Координата X"))

bytY1 = Val(InputBox("Введите координату Y", "Координата Y"))

picPaint.PSet (bytX1, bytY1), vbRed

End Sub

 

            Процедура рисования линии. Координаты концов линии и числовой код цвета будем запрашивать с помощью функции ввода InputBox. Цвет будем задавать с помощью функции QBColor(number), аргументом которой являются числа от 0 до 15, а результатом – один из основных 16 цветов.

4

Разместить на форме кнопку cmdLine и создать  событийную процедуру рисования линии:

 

Private Sub cmdLine_Click()

bytX1 = Val(InputBox("Введите координату Х1", "Координата X1"))

bytY1 = Val(InputBox("Введите координату Y1", "Координата Y1"))

bytX2 = Val(InputBox("Введите координату Х2", "Координата X2"))

bytY2 = Val(InputBox("Введите координату Y2", "Координата Y2"))

bytC = Val(InputBox("Введите цвет", "Цвет"))

picPaint.Line (bytX1, bytY1)-(bytX2, bytY2), QBColor(bytC)

End Sub

 

            Процедура рисования прямоугольника. Координаты противоположных вершин прямоугольника и числовые коды интенсивностей красного, зеленого и синего цветов будем запрашивать с помощью функции ввода InputBox.

 Цвет будем задавать с помощью функции RGB(bytRed,bytGreen,bytBlue), аргументами которой являются три числа в диапазонах 0 до 255 (интенсивности базовых цветов), а результатом – число типа Long в диапазоне от 0 до 2563 (16 777 215). Таким образом, определяется  цветовая палитра с более чем 16 миллионами цветов, а каждый цвет задается числом, которое вычисляется по формуле bytRed + 256*bytGreen + 2562*bytBlue.

5

Разместить на форме кнопку cmdLineB и создать  событийную процедуру рисования прямоугольника:

 

Private Sub cmdLineB_Click()

bytX1 = Val(InputBox("Введите координату Х1", "Координата X1"))

bytY1 = Val(InputBox("Введите координату Y1", "Координата Y1"))

bytX2 = Val(InputBox("Введите координату Х2", "Координата X2"))

bytY2 = InputBox("Введите координату Y2", "Координата Y2")

bytR = Val(InputBox("Введите интенсивность красного цвета", "Красный цвет"))

bytG = Val(InputBox("Введите интенсивность зеленого цвета", "Зеленый цвет"))

bytB = Val(InputBox("Введите интенсивность синего цвета", "Синий цвет"))

picPaint.Line (bytX1, bytY1)-(bytX2, bytY2), RGB(bytR, bytG, bytB), B

End Sub

6

Разместить на форме кнопки cmdLineBF и cmdCircle и самостоятельно создать событийные процедуры рисования закрашенных прямоугольников и окружностей.

7

Запустить проект. Последовательно щелкнуть на кнопки рисования объектов и ввести необходимые параметры на появляющихся панелях ввода.

8

Сохранить проект в файле prj12.vbp.

 

            Проект 5.13. «Построение графика функции».  Разработаем проект построения графиков функций. В качестве примера рассмотрим построение графика функции y = sinx. 

Проект «Построение графика функции».

1

Разместить на форме графическое поле picGraph, в котором будет производиться построение графика.

2

Разместить на форме кнопку cmd1 и создать  событийную процедуру построения графика, которая установит масштаб, в цикле осуществит построения графика функции, нарисует оси координат и напечатает на них числовую шкалу:

 

Private Sub cmd1_Click()

'Задание масштаба

picGraph.Scale (-10, 2)-(10, -2)

'Построение графика

For sngX = -10 To 10 Step 0.01

picGraph.PSet (sngX, Sin(sngX))

Next sngX

'Ось Х

picGraph.Line (-10, 0)-(10, 0)

For bytI = -10 To 10

picGraph.PSet (bytI, 0)

picGraph.Print bytI

Next bytI

'Ось Y

picGraph.Line (0, 2)-(0, -2)

For bytI = -2 To 2

picGraph.PSet (0, bytI)

picGraph.Print bytI

Next bytI

End Sub

3

Запустить проект и щелкнуть по кнопке График.

Для построения графика другой функции необходимо в программном коде в цикле построения графика задать новую функцию.

4

Сохранить проект в файле prj13.vbp.

 

Задания для самостоятельного выполнения (Ответы)

5.46. Усовершенствовать проект 5.12 «Графический редактор» так, чтобы параметры для рисования графических примитивов задавались в текстовых полях и существовала возможность очистки поля рисования.

5.47. Усовершенствовать проект-задание  5.46 так, чтобы координаты для рисования графических примитивов задавались щелчками мыши в определенных точках графического поля.

5.48. Усовершенствовать проект-задание 5.47 так,  чтобы управление графическим редактором реализовывалось не кнопками, а с помощью меню.

5.49. Придумать проект, реализующий демонстрацию палитры цветов.

5.50. Создать проект, позволяющий задавать цвета различными способами (с помощью цветовых констант, функции QBColor и функции RGB) и демонстрирующий заданный цвет.

5.51. Создать проект, который чертит треугольник по заданным щелчком мыши точкам и вычисляет его периметр и площадь.

5.52. Усовершенствовать проект 5.13 «Построение графика функции» так, чтобы можно было строить график функции для различных наборов значений ее аргумента Х. Предусмотреть автоматическую корректировку масштаба и шкал осей координат. Предусмотреть возможность очистки графического поля.

5.53. Усовершенствовать проект 5.13 «Построение графика функции» так, чтобы можно было приближенно, графически, решать уравнения, например, уравнение x3 = sinx.