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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 03.02.2012, 15:32
gamst gamst вне форума
Прохожий
 
Регистрация: 03.02.2012
Сообщения: 1
Репутация: 10
Восклицание Сдвиг и масштабирование графика функции

Привет! Пишу программу, которая рисует график функции "Цепная линия"
y:=10*((exp(x/2))+(exp(-x/2)))/2;
Прошу помочь вот по этим вопросам:
1) как сдвигать график па нажатию какой-либо клавиши (например, клавиша w - вверх на 15пикселей)?
2) как масштабировать график функции тоже по нажатию какой либо клавиши (например на 10º)?
3) Вместо "10", нужно где-то в Edit'е чтоб вводилось любое число.

Код программы:
PHP код:
unit Unit1;

interface

uses
  Windows
MessagesSysUtilsVariantsClassesGraphicsControlsForms,
  
DialogsStdCtrlsExtCtrls;

type
  TForm1 
= class(TForm)
    
Button1TButton;
    
Button2TButton;
    
Image1TImage;
    
Label1TLabel;
    
Label2TLabel;
    
procedure Button2Click(SenderTObject);
    
procedure Button1Click(SenderTObject);

  private
    { Private 
declarations }
  public
    { Public 
declarations }
  
end;

var
  
Form1TForm1;
implementation

{$R *.dfm}

procedure TForm1.Button2Click(SenderTObject);
  
begin
    Close
;
  
end;

procedure TForm1.Button1Click(SenderTObject);
var 
xc,yc,w,h,i:integer;
    
mx,my,x,y:real;
  
begin
  xc
:=Image1.Width div 2;
  
yc:=Image1.Height div 2;
  
w:=xc*2;
  
h:=yc*2;
  
mx:=(w-200)/100;
  
my:=(h-200)/100;
  
with Image1.Canvas do
    
begin
    Brush
.Color:=clWhite;
    
Pen.Color:=clGreen;
    
MoveTo(0,yc);//линии осей
    
LineTo(w,yc);
    
MoveTo(xc,0);
    
LineTo(xc,h);
    
textout(w-20,yc-25,'x');//подпись концов
    
textout(xc+5,5,'y');
    
textout(xc+5,yc+5,'0');
    for 
i:=1 to 50 do
      
begin
      MoveTo
(xc+round(i*mx*10),yc-2); LineTo(xc+round(i*mx*10),yc+2);//засечки на оси Х, от 0 до +x
      
MoveTo(xc-round(i*mx*10),yc-2); LineTo(xc-round(i*mx*10),yc+2);// от -x до 0
      
textout(xc+round(i*mx*10),yc+10,Inttostr(10*i));//подписи
      
textout(xc-round(i*mx*10),yc+10,Inttostr(-10*i));
      
MoveTo(xc+2,yc-round(i*my*10)); LineTo(xc-2,yc-round(i*my*10));//засечки по У, от 0 до +y
      
MoveTo(xc+2,yc+round(i*my*10)); LineTo(xc-2,yc+round(i*my*10));// от -y до 0
      
textout(xc-15,yc-round(i*my*10),Inttostr(10*i));//подписи
      
textout(xc-15,yc+round(i*my*10),Inttostr(-10*i));
      
end;
    
x:=-30;
    while 
x<=30 do
      
begin
      y
:=10*((exp(x/2))+(exp(-x/2)))/2;
      
pixels[xc+round(x*mx),yc-round(y*my)]:=clred;
      
x:=x+0.0013;
      
end;
    
end;
  
end;
end
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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