Неверов Евгений Викторович
Меню сайта
Категории раздела
Программирование на языке Паскаль [27]
В данной категории представлены новые функции, созданные на языке Паскаль, которые могут пригодиться при написании своих программ
Программирование на Delphi [18]
В данной категории представлены полезные подпрограммы, которые могут пригодиться при написании своих программ, а также рассматриваются примеры готовых проектов, создаваемых в среде программирования Delphi
Программирование на HTML [0]
В данной категории рассматриваются примеры готовых проектов, создаваемых на языке HTML
Прочее [0]
Свободная тематика
Мини-чат
200
Наш опрос
Чем Вы занимаетесь?
Всего ответов: 36
Статистика

Рейтинг@Mail.ru
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » Статьи » Программирование на Delphi [ Добавить статью ]

График функции
function f(x: real): real;
begin
   Result:=10*Sin(x/2);
end;

procedure TForm1.Button1Click(Sender: TObject);
const k=18.5; // коэффициент масштабирования
var i, x0, y0, xi, yi: integer;
    x, y: real;
begin
   With Image1.Canvas do
   begin
      { очистка поля }
      Pen.Color:=clWhite;
      Brush.Color:=Pen.Color;
      Rectangle(0, 0, Image1.Width, Image1.Height);
      { начало координат (центр поля) }
      x0:=Image1.Width div 2;
      y0:=Image1.Height div 2;
      { рисование координат }
      Pen.Color:=clBlack;
      MoveTo(0, y0);
      LineTo(Image1.Width, y0);
      MoveTo(x0, 0);
      LineTo(x0, Image1.Height);
      { рисование стрелок }
      MoveTo(Image1.Width-10, y0-5);
      LineTo(Image1.Width, y0);
      LineTo(Image1.Width-11, y0+6);
      MoveTo(x0-5, 10);
      LineTo(x0, 0);
      LineTo(x0+6, 11);
      { нанесение делений на осях }
      For i:=-Round(x0/k) to Round((x0-20)/k) do // 20 - на стрелках не наносить
      begin
         xi:=x0+Round(i*k);
         If i<>0 then
            TextOut(xi-5, y0+5, IntToStr(i));
         MoveTo(xi, y0-3);
         LineTo(xi, y0+4);
      end;
      For i:=-Round(y0/k) to Round((y0-20)/k) do
      begin
         yi:=y0-Round(i*k);
         If i<>0 then
            TextOut(x0+5, yi-7, IntToStr(i));
         MoveTo(x0-3, yi);
         LineTo(x0+4, yi);
      end;
      { рисование самой функции }
      Pen.Color:=clRed;
      y:=f(-x0/k);
      yi:=y0-Round(y*k);
      MoveTo(0, yi);
      For i:=0 to Image1.Width do
      begin
         x:=(i-x0)/k;
         y:=f(x);
         xi:=x0+Round(x*k);
         yi:=y0-Round(y*k);
         LineTo(xi, yi);
      end;
   end;
end;

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

Категория: Программирование на Delphi | Добавил: newerow1989 (21.01.2018 14:47 )
Просмотров: 69 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Все смайлы
Код *:
Поиск
Друзья сайта
  • Создать сайт
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Все проекты компании
  • Copyright MyCorp © 2018
    Автор этого сайта: Неверов Евгений Викторович

    Мои координаты
    Бесплатный конструктор сайтов - uCozЯндекс.Метрика