Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Метод отрисовки
После того как программа C++Builder запущена, она автоматически открывает новый проект. Дополнительные компоненты на форме размещать не надо — требуется только переопределить метод, ответственный за перерисовку изображения на форме. Для этого в Инспекторе объектов надо выбрать закладку Events (События), на ней найти строку с названием OnPaint и дважды щелкнуть на ней мышкой. C++Builder автоматически сгенерирует соответствующий программный код обработки события перерисовки: void fastcall TForml:: FormPaint(TObject *Sender) { } Алгоритм отображения графика несложен. Он умещается в нескольких операторах. Переменные Width (Ширина) и Height (Высота) — свойства формы, определяющие ее текущую ширину и длину в пикселах. Координату по оси Y нельзя взять непосредственно из переменной у, а надо вычислять по формуле Height-y, потому что в C++Builder считается, что точка с координатами (0, 0) расположена в верхнем левом углу окна, а ось Y направлена вниз. Для удобства восприятия эту ось надо перевернуть.
void fastcall TForml:: FormPaint(TObject *Sender) { int x, y; // начальные координаты х = 0; у = 0; // начальная точка графика Canvas-> MoveTo(0, Height); // цикл, пока каждая координата очередной точки // укладывается в размер экрана while (х < Width & & у < Height) { // следующая точка по оси X х = х + 1; // соответствующее значение по оси Y У = f (x); // в новую точку (x, Height-y) рисуется линия Canvas-> LineTo(x, Height-y); } }
Чуть выше метода Form Paint надо определить функцию f(), не привязанную ни к какому классу. В ней происходит вычисление значения анализируемой математической функции по заданному аргументу. Для примера она может выглядеть так: int f(int x) { int у; у = floor(50*log(x)); return у; }
Стандартная функция log() вычисляет значение логарифма. Коэффициент 50 нужен, чтобы кривая пропорционально размещалась в окне. Функция floor() вычисляет целую часть аргумента (преобразовывает его в целое число), потому что в методах рисования надо указывать координаты только в целых числах (пикселах). Исходно функции log(), floor() и ряд других не подключены к текущему проекту. Чтобы они стали доступными, библиотеку, в которой они хранятся, необходимо явно указать компилятору. Делается это с помощью командной строки #include " Math.h" которую можно поместить в самое начало текущего файла. Далее проект надо сохранить, выполнить компиляцию и запустить, нажав клавишу F9. В дальнейшем, изменив один оператор присваивания в функции f() и подобрав подходящие коэффициенты, с помощью этой программы можно строить самые разные графики.
|