Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.12.2008, 18:22
Xcopy Xcopy вне форума
Прохожий
 
Регистрация: 06.10.2008
Сообщения: 35
Репутация: 10
Вопрос Каким образом можно нарисовать в Image график?

Каким образом можно нарисовать в Image график написаный в Edit.
Тоесть есть Image, есть Edit, я в Еdit пишу sinx-3 и в тот же миг готовый график вылезает в Image.
Ну вообщем идея я думаю понятно... вот только есть 1 маленькая проблемка... КАК ЭТО РЕАЛИЗОВАТЬ?
Ответить с цитированием
  #2  
Старый 12.12.2008, 18:24
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,048
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну для начала тебе нужен некоторый анализатор, который разберет что ты там понаписал в Edit'е и сможет вычислять по этой формуле. Ну а дальше нарисовать график - уже пустяки.
Ответить с цитированием
  #3  
Старый 12.12.2008, 21:03
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Для начала тебе нужно реализовать парсер для вычисления твоей формулы, далее тебе необходимо построить декартову систему координат.
Код:
procedure LineToXY(x,y:single;_color:TColor);
var Temp:TColor;
begin
  Temp:=Form1.imgGraph.Canvas.Pen.Color;
  Form1.imgGraph.Canvas.Pen.Color:=_color;
  Form1.imgGraph.Canvas.LineTo(Trunc(ImageCenter.X+(x*Zoom)),Trunc(ImageCenter.y-(y*Zoom)));
  Form1.imgGraph.Canvas.Pen.Color:=Temp;
end;

procedure MoveToXY(x,y:single);
begin
  Form1.imgGraph.Canvas.MoveTo(Trunc(ImageCenter.X+(x*Zoom)),Trunc(ImageCenter.Y-(y*Zoom)));
end;
это для построения вектора в двухмерном пространстве.

Код:
  if Form1.cbDrawGrid.Checked Then
    begin
      For X:=-10 to 10 Do
        begin
          MoveToXY(X,-10);
          LineToXY(x,10,clSilver);
        end;
      For Y:=-10 to 10 Do
        begin
          MoveToXY(-10,Y);
          LineToXY(10,Y,clSilver);
        end;
    end;   
  MoveToXY(-10,0);
  LineToXY(10,0,clRed);
  MoveToXY(0,-10);
  LineToXY(0,10,clLime);
  DrawPointer(10,0,True,clRed);
  DrawPointer(0,10,False,clLime);
  
  for X := -10 to 10 do
    Begin
      MoveToXY(X,-0.05);
      LineToXY(X,0.05,clRed);
      TextToXY(X,-0.1,IntToStr(X));
    End;

  for Y := -10 to 10 do
    Begin
      If Y=0 Then
        Continue;
      MoveToXY(-0.05,Y);
      LineToXY(0.05,Y,clLime);
      TextToXY(0.1,Y,IntToStr(Y));
    End;
это отрисовка координатной сетки и отрисовки осей координат.

Вот в принципе и все, сам же парсер можеш найти на этом сайте в исходниках.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:14.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter