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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.06.2013, 02:40
sahan sahan вне форума
Прохожий
 
Регистрация: 13.06.2013
Сообщения: 2
Версия Delphi: Delphi 7
Репутация: 10
Восклицание нужна помощь с графиком

Ребята, такая проблема: необходимо перевернуть график (т.е. чтобы ось Y была направлена вверх).

Код:
unit Lab12_1Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Math, Menus;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    function f(x: real): real;
    procedure N1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  a, b, h: real;

implementation

{$R *.dfm}

function TForm1.f(x: real): real;
begin
  f :=sqr((sin(x+1)));
end;

procedure TForm1.N1Click(Sender: TObject);
var
  i, y: real;
  j: integer;
begin
  a := 0;
  b := 3.14;
  h := 0.005;
  i := a;
  {===============================Строим график===========================}
  y := f(i);
  Canvas.Pen.Color := clBlue;
  Canvas.MoveTo(Round(i*100), Round(y*100));
  while i <= b do
  begin
    y := f(i);
    i := i + h;
    Canvas.LineTo(Round(i*100), Round(y*100));
  end;
  {=======================================================================}
  {===============================Рисуем и подписываем оси================}
  Canvas.Pen.Color := clRed;
  Canvas.TextOut(5, 5, '0');
  Canvas.MoveTo(0, 0);
  i := 0;
  while i <= b do
  begin
    i := i + 0.5;
    Canvas.LineTo(Round(i*100), 0);
    Canvas.LineTo(Round(i*100), 10);
    Canvas.TextOut(Round(i*100), 10, FloatToStr(i));
    Canvas.MoveTo(Round(i*100), 0);
  end;
  i := i + 0.5;
  Canvas.LineTo(Round(i*100), 0);
  Canvas.TextOut(Round(i*100), 10, 'x');

  Canvas.MoveTo(0, 0);
  j := 0;
  while j < 1 do
  begin
    j := j + 1;
    Canvas.LineTo(0, j*100);
    Canvas.LineTo(10, j*100);
    Canvas.TextOut(15, j*100, FloatToStr(j));
    Canvas.MoveTo(0, j*100);
  end;
  j := j + 1;
  Canvas.LineTo(0, j*100);
  Canvas.TextOut(15, j*100, 'y');
  {=======================================================================}
end;

end.

lmikle: Используем правильные теги!

Последний раз редактировалось lmikle, 13.06.2013 в 07:22.
Ответить с цитированием
  #2  
Старый 13.06.2013, 07:25
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,035
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от sahan
Ребята, такая проблема: необходимо перевернуть график (т.е. чтобы ось Y была направлена вверх).

Round(y*100) заменить на что-то типа Round(Height - y*100)
Ответить с цитированием
  #3  
Старый 13.06.2013, 11:08
sahan sahan вне форума
Прохожий
 
Регистрация: 13.06.2013
Сообщения: 2
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

спасибо! перевернулся сам график, но не ось..но я думаю этого пока достаточно.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter