Неверов Евгений Викторович
QR-код
Меню сайта
Категории раздела
Программирование на языке Паскаль [27]
В данной категории представлены новые функции, созданные на языке Паскаль, которые могут пригодиться при написании своих программ
Программирование на Delphi [18]
В данной категории представлены полезные подпрограммы, которые могут пригодиться при написании своих программ, а также рассматриваются примеры готовых проектов, создаваемых в среде программирования Delphi
Программирование на HTML [1]
В данной категории рассматриваются примеры готовых проектов, создаваемых на языке HTML
Мои программы [1]
Описание разработанных автором программ.
Online-программы [2]
Прочее [42]
Свободная тематика
Мини-чат
200
Наш опрос
Существуют ли инопланетяне?
Всего ответов: 11
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

График функции
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)
Просмотров: 872 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Вход на сайт
Поиск
Друзья сайта
Заработок в Интернете
Для начала необходим Электронный PAYEER® кошелек!
Copyright MyCorp © 2024
Версия для мобильных устройств. Яндекс.Метрика БКНС Анализ сайта