Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2009, 14:12   #1
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию График функции

Знаю что обсуждалось тысячи раз, но всё же хочется доработать свой код:
Код:
function f(x:real):real;
begin
result:=x*x*x-9*x;
end;

procedure TForm1.FormPaint(Sender: TObject);
var
i:integer;
o:Tpoint;
begin
   with canvas do
   begin
      InValidateRect(Canvas.Handle,nil,true);
      //Начало координат
      Pen.Color:=clblack;
      o.X:=ClientWidth div 2;
      o.Y:=ClientHeight div 2;
      //Рисуем ось
      moveto(0,o.Y);
      Lineto(ClientWidth,o.Y);
      moveto(o.X,0);
      Lineto(o.X,ClientHeight);
      TextOut((o.X)-7,(o.Y)+1,'0');
      moveto(-ClientWidth,-ClientHeight);
      //Рисуем функцию
      Pen.Color:=clred;
      for I := -ClientWidth to ClientWidth do
      begin
      if (-trunc(f(i))+o.Y)>=-50 then
        lineto(i+o.X,-trunc(f(i))+o.Y);
      end;
   end;
end;

procedure TForm1.FormResize(Sender: TObject);
begin
   repaint;
end;
Всё строится и работает замечательно и быстро, но всё же интересует глупый вопрос, как лучше увеличить размер графика? А то всё мелкое, а код для увеличения, который лезет мне в голову похож на мазахизм)
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 30.09.2009, 14:47   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
как лучше увеличить размер графика?
Когда-то чтоб отстал преподаватель я X и Y умножал на коэффициент а потом их отрисовывал. Полноценным масштабированием это не назовешь, но все же. Плюс к этому умельчал шаг изменения одной из координаты (как правило это был икс).
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.09.2009, 14:58   #3
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

и правда, спасибо, всё оказалось гораздо проще чем я думал:
Код:
function f(x:real):real;
begin
result:=sqr(x);
end;

procedure TForm1.FormPaint(Sender: TObject);
const
size=10;
var
i:integer;
o:Tpoint;
ap:array of tpoint;
begin
   with canvas do
   begin
      InValidateRect(Canvas.Handle,nil,true);
      //Начало координат
      Pen.Color:=clblack;
      o.X:=ClientWidth div 2;
      o.Y:=ClientHeight div 2;
      //Рисуем ось
      moveto(0,o.Y);
      Lineto(ClientWidth,o.Y);
      moveto(o.X,0);
      Lineto(o.X,ClientHeight);
      TextOut((o.X)-7,(o.Y)+1,'0');
      moveto(-ClientWidth,-ClientHeight);
      //Рисуем функцию
      Pen.Color:=clred;
      setlength(ap,ClientWidth*2);
      for I := -ClientWidth to ClientWidth do
      begin
         if (-trunc(f(i))+o.Y)>=-200 then
         begin
            ap[I+ClientWidth].X:=(i*size)+o.X;
            ap[i+ClientWidth].Y:=(-trunc(f(i))*size)+o.Y;
         end;
      end;
      Polyline(ap);
   end;
end;

procedure TForm1.FormResize(Sender: TObject);
begin
   repaint;
end;
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
График функции balamut Общие вопросы .NET 18 22.04.2016 11:11
График функции (delphi 7) Demav Помощь студентам 12 02.07.2009 08:43
График функции Леха Общие вопросы Delphi 18 16.04.2007 20:50