Показать сообщение отдельно
  #2  
Старый 06.06.2014, 19:08
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);

type TFunc = function (x: real): real;

 procedure DrawGraph (f: TFunc; a: real; b: real; C: TCanvas);
 var
  x, y, h, max, min, sx, sy: real;
  xmid, ymid: integer;
 begin
  sx:= (c.ClipRect.Right) / (b-a);
  h:= 1 / sx;
  xmid:= c.ClipRect.Right  div 2;
  ymid:= c.ClipRect.Bottom div 2;
  x:= a;
  max:= f(x);
  min:= max;

 while x <= b do
  begin
   y:= f(x);
   if y < min then min:= y;
   if y > max then max:= y;
   x:= x + h;
  end;

  sy:= c.ClipRect.Bottom / (max - min);
  c.Brush.Color:= clBlack;
  c.FillRect(Rect(0, 0, c.ClipRect.Right, c.ClipRect.Bottom));
  c.Pen.Color:= clYellow;
  c.MoveTo(0, ymid);
  c.LineTo(c.ClipRect.Right, ymid);
  c.MoveTo(xmid, 0);
  c.LineTo(xmid, c.ClipRect.Bottom);
  x:= a;
  y:= f(x);
  c.Pen.Color:= clWhite;
  c.MoveTo(xmid + round(sx * x), ymid - round(sy * y));
  while x <= b do
  begin
    y:= f(x);
    c.LineTo(xmid + round(sx * x), ymid - round(sy * y));
    x:= x + h;
  end;
end;
  begin
  Canvas.Brush.Style:= bsCross;
  Canvas.Brush.Color:= clRed;
  Canvas.Pen.Color:= clRed;
  Canvas.Ellipse(100, 100, 300, 200);
end;

З.Ы. Небольшое бегинендовое нарушение синтаксиса языка, пропущено ключевое слово, одним словом мелочёвка по невнимательности, результат - на форме рисуется красный клетчатый овал
Ответить с цитированием