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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2009, 22:46   #1
лорд преисподней
Пользователь
 
Регистрация: 14.11.2009
Сообщений: 17
По умолчанию Построение графика через таймер

помогите мне чтобы этот график строился последовательно через таймер.


Это код построения графика

Код:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;
type
  TForm1 = class(TForm)
  procedure FormPaint(Sender: TObject);
  procedure FormResize(Sender: TObject);
  private
  { Private declarations }
  public
  { Public declarations }
  end;
var
  Form1: TForm1;

implementation

{$R *.dfm}
 Function f(x:real):real;
begin
f:=2*Sin(x)*exp(x/5);
end;
// строит график функции
procedure GrOfFunc;
var
x1,x2:real; // границы изменения аргумента функции
y1,y2:real; // границы изменения значения функции
x:real; // аргумент функции
y:real; // значение функции в точке х
dx:real; // приращение аргумента


l,b:integer; // левый нижний угол области вывода графика
w,h:integer; // ширина и высота области вывода графика
mx,my:real; // масштаб по осям X и Y 
x0,y0:integer; // точка - начало координат
begin // область вывода графика
l:=10; // X - координата левого верхнего угла
b:=Form1.ClientHeight-20; //У - координата левого верхнего угла
h:=Form1.ClientHeight-40; // высота
w:=Form1.Width-40; // ширина
x1:=0; // нижняя граница диапазона аргумента
x2:=25; // верхняя граница диапазона аргумента
dx:=0.01; // шаг аргумента

// найдем максимальное и минимальное значения
// функции на отрезке [x1,x2]

y1:=f(x1); // минимум
y2:=f(x1); //максимум
x:=x1;
repeat
y := f (x);
if y < y1 then y1:=y;
if y > y2 then y2:=y;
x:=x+dx; until (x >= x2);
// вычислим масштаб
my:=h/abs(y2-y1); // масштаб по оси Y
mx:=w/abs(x2-x1); // масштаб по оси X
x0:=1;
y0:=b-Abs(Round(y1*my)) ;
with form1.Canvas do
begin // оси
MoveTo(l,b);LineTo(l,b-h);
MoveTo(x0,y0);LineTo(x0+w,y0);
TextOut(l+5,b-h,FloatToStrF(y2,ffGeneral,6,3));
TextOut(l+5,b,FloatToStrF(y1,ffGeneral,6,3));
// построение графика
x:=x1; repeat
y:=f(x);
Pixels[x0+Round(x*mx),y0-Round(y*my)]:=clRed;
x:=x+dx;
until (x >= x2);
end;
end;


procedure TForm1.FormPaint(Sender: TObject); 
begin
GrOfFunc; end;
// изменился размер окна программы

procedure TForm1.FormResize(Sender: TObject); 
begin
// очистить форму
form1.Canvas.FillRect(Rect(0,0,ClientWidth,ClientHeight));
// построить график
GrOfFunc;
end;
end.

Последний раз редактировалось mihali4; 16.11.2009 в 23:42.
лорд преисподней вне форума Ответить с цитированием
Старый 16.11.2009, 22:49   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

ну так перенесите
Код:
y:=f(x);
Pixels[x0+Round(x*mx),y0-Round(y*my)]:=clRed;
x:=x+dx;
в обработчик таймера
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 16.11.2009, 22:55   #3
лорд преисподней
Пользователь
 
Регистрация: 14.11.2009
Сообщений: 17
По умолчанию

procedure TForm1.Timer1Timer(Sender: TObject);
begin
y:=f(x);
Pixels[x0+Round(x*mx),y0-Round(y*my)]:=clRed;
x:=x+dx;
end;

если пишу так он мне пишет что Y неверный индентификатор также как и pixels и mx что делать???

может эти переменный прописать в паблике или привайте ???

Последний раз редактировалось mihali4; 16.11.2009 в 23:41.
лорд преисподней вне форума Ответить с цитированием
Старый 16.11.2009, 23:10   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

вы сами ответили на свой вопрос да, сделайте их глобальными...
не забудьте убрать их из procedure GrOfFunc;
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 16.11.2009, 23:14   #5
лорд преисподней
Пользователь
 
Регистрация: 14.11.2009
Сообщений: 17
По умолчанию

а как нащёт Pixels это же не переменая и она не описываеться что с ней делать???
лорд преисподней вне форума Ответить с цитированием
Старый 16.11.2009, 23:19   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...надеюсь, вы не забыли про- form1.Canvas ?
и про то, что GrOfFunc должна выполнится перед таймером
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 16.11.2009, 23:26   #7
лорд преисподней
Пользователь
 
Регистрация: 14.11.2009
Сообщений: 17
По умолчанию

можно спросить а вы можете попробывать у себя это зделать и сказать почему у меня так долго грузиться когда интервал стоит 1000

а теперь ваще нересует график

Последний раз редактировалось mihali4; 16.11.2009 в 23:41.
лорд преисподней вне форума Ответить с цитированием
Старый 16.11.2009, 23:44   #8
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

To лорд преисподней
Откуда бы ни был, а правила читать нужно.
На первый раз устное предупреждение...
За что? В правилах все ясно сказано.
mihali4 вне форума Ответить с цитированием
Старый 16.11.2009, 23:45   #9
лорд преисподней
Пользователь
 
Регистрация: 14.11.2009
Сообщений: 17
По умолчанию

простите просто завтра сдача курсового и нервы не к чёрту
лорд преисподней вне форума Ответить с цитированием
Старый 16.11.2009, 23:50   #10
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
можно спросить а вы можете попробывать у себя это зделать и сказать почему у меня так долго грузиться
см. вложение
Изображения
Тип файла: jpg 1.jpg (18.1 Кб, 141 просмотров)
Вложения
Тип файла: zip osc.zip (1.9 Кб, 42 просмотров)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
построение графика tanka123 Microsoft Office Excel 1 17.06.2009 09:17
Построение графика! kiling Мультимедиа в Delphi 0 19.05.2009 21:03
графика, таймер... NEC Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 26.03.2008 23:56
Построение Графика Боня Помощь студентам 3 20.01.2007 19:32