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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.05.2012, 15:52
Аватар для MiLa=))
MiLa=)) MiLa=)) вне форума
Прохожий
 
Регистрация: 29.05.2012
Сообщения: 2
Репутация: 10
По умолчанию Графика

ПРОГРАММУ ДЕЛАЛА НЕ САМА РАЗБИРАЛИ КАК ТО НА ПАРЕ. И НЕЧЕГО ТОЛКОМ НЕ ПОНЯЛА. НЕ ЗНАЮ КАК ПЕРЕДЕЛАТЬ ПРОМЕЖУТКИ ПО ОСЯМ Х и У что бы были 1 -1 Помогите Пожалуйста))
Кто тут разбирается
Код:
var
  Form1: TForm1;
  Mashtab:integer;
implementation

{$R *.dfm}
// границы вывода графика
const a = -3*pi;
      b = 3*pi;
// сам график
function f(X:real) : Real;
begin
Result := sin(2*x);
end;

procedure TForm1.FormPaint(Sender: TObject);
var
  x,y:Real;
  i,k:Integer;
begin
Canvas.Pen.Color:=clWhite;
Canvas.Brush.Color:=clWhite;
Canvas.Rectangle(0,0,Width,Height);
Canvas.Pen.Color:=clBlack;
Canvas.MoveTo(ClientWidth div 2,0);         //Вертикальна ось
Canvas.LineTo(ClientWidth div 2,ClientHeight);

Canvas.MoveTo(0,ClientHeight div 2);      //горизонтальная ось
Canvas.LineTo(ClientWidth,ClientHeight div 2);

Canvas.MoveTo(ClientWidth - 10,ClientHeight div 2 - 5);  //стрелочка на горизонтальной оси
Canvas.LineTo(ClientWidth,ClientHeight div 2);
Canvas.LineTo(ClientWidth - 10,ClientHeight div 2 + 5);

Canvas.MoveTo(ClientWidth div 2 - 5,10);                //стрелочка на вертикальной оси
Canvas.LineTo(ClientWidth div 2,0);
Canvas.LineTo(ClientWidth div 2 + 5,10);

//---Штрихи по положительной оси x---------------------------------------------
x:=0;
k:=1;
i:=ClientWidth div 2;
while i < ClientWidth do
  begin
  if x > k then
    begin
    Canvas.MoveTo(i,ClientHeight div 2 - 5);
    Canvas.LineTo(i,ClientHeight div 2 + 5);
    Canvas.TextOut(i-2,ClientHeight div 2 + 5,IntToStr(k));
    k:=k+1;
    end;
  x:=x + 1/mashtab;
  i:=i + 1;
  end;
//---Штрихи по отрицательной оси x---------------------------------------------
x:=0;
k:=- 1;
i:=ClientWidth div 2;
while i > 0 do
  begin
  if x < k then
    begin
    Canvas.MoveTo(i,ClientHeight div 2 - 5);
    Canvas.LineTo(i,ClientHeight div 2 + 5);
    Canvas.TextOut(i-2,ClientHeight div 2 + 5,IntToStr(k));
    k:=k - 1;
    end;
  x:=x - 1/mashtab;
  i:=i - 1;
  end;
//---Штрихи по отрицательной оси y---------------------------------------------
y:=0;
k:=1;
i:=ClientHeight div 2;
while i < ClientHeight do
  begin
  if y > k then
    begin
    Canvas.MoveTo(ClientWidth div 2 - 5,i);
    Canvas.LineTo(ClientWidth div 2 + 5,i);
    Canvas.TextOut(ClientWidth div 2 + 5,i-5,IntToStr(-k));
    k:=k + 1;
    end;
  y:=y + 1/mashtab;
  i:=i + 1;
  end;

//---Штрихи по положительной оси y---------------------------------------------
y:=0;
k:=-1;
i:=ClientHeight div 2;
while i > 0 do
  begin
  if y < k then
    begin
    Canvas.MoveTo(ClientWidth div 2 - 5,i);
    Canvas.LineTo(ClientWidth div 2 + 5,i);
    Canvas.TextOut(ClientWidth div 2 + 5,i-5,IntToStr(-k));
    k:=k - 1;
    end;
  y:=y - 1/mashtab;
  i:=i - 1;
  end;
//-------сам график------------------------------------------------------------
Canvas.Pen.Color:=clRed;
// в первую точку
x:=a;
y:= f(x);
Canvas.MoveTo(ClientWidth div 2 + Round(x*mashtab), ClientHeight div 2 - Round(y*mashtab));
while x < b do
  begin
  x:= x + 1/mashtab;
  y:= f(x);
  Canvas.LineTo(Round(x*mashtab) + ClientWidth div 2, ClientHeight div 2 - Round(y*mashtab));
  end;

end;

procedure TForm1.FormResize(Sender: TObject);
begin
Form1.FormPaint(Sender);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Mashtab:=50;
end;

procedure TForm1.FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
  MousePos: TPoint; var Handled: Boolean);
begin
mashtab:=mashtab + 10;
FormPaint(Sender);
end;

procedure TForm1.FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
  MousePos: TPoint; var Handled: Boolean);
begin
if mashtab>10 then mashtab:=mashtab - 10;
FormPaint(Sender);
end;

end.
Админ: Пользуемся тегами!

Последний раз редактировалось MiLa=)), 29.05.2012 в 15:58.
Ответить с цитированием
  #2  
Старый 29.05.2012, 19:24
Аватар для AND_REY
AND_REY AND_REY вне форума
Активный
 
Регистрация: 31.03.2009
Адрес: Украина, г.Днепропетровск
Сообщения: 324
Версия Delphi: Delphi7
Репутация: 3877
По умолчанию

Добавил 2-ве константы: 1-я - до скольки нумеровать по оси Х вторая по Y
1111.rar
__________________
If end Then begin;
Ответить с цитированием
  #3  
Старый 29.05.2012, 20:52
Аватар для MiLa=))
MiLa=)) MiLa=)) вне форума
Прохожий
 
Регистрация: 29.05.2012
Сообщения: 2
Репутация: 10
По умолчанию

СПАСИБО БОЛЬШОЕ))
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter