Author Topic: Начертить график в BDS2006  (Read 4548 times)

0 Members and 1 Guest are viewing this topic.

Offline maximus

  • Newbie
  • *
  • Posts: 3
  • Karma: +0/-0
Начертить график в BDS2006
« on: March 15, 2007, 00:04:25 »
В общем-то всё просто. Нужно через цикл с изменением параметра t и MoveTo/LineTo нарисовать график функции, заданой параметрически: x=3*cos(t); y=3*sin(t); t=[0..2*pi]
   
         x0=PaintBox->Width/2;
   y0=PaintBox->Height/2;
   x=x0;y=y0;
   for(t = 0; t<6.28 ; t+=0.01)  {
      PaintBox->Canvas->MoveTo(x,y);
          x=3*cos(t);
          y=3*sin(t);
      PaintBox->Canvas->LineTo(x,y); }
Вот такой код написал, вроде должен работать, аннет. Может кто-нибудь подскажет, где я накосячил?

Offline maximus

  • Newbie
  • *
  • Posts: 3
  • Karma: +0/-0
Начертить график в BDS2006
« Reply #1 on: March 15, 2007, 10:18:35 »
Cправился

Offline John_84

  • Newbie
  • *
  • Posts: 38
  • Karma: +0/-0
    • http://
Начертить график в BDS2006
« Reply #2 on: March 15, 2007, 18:45:12 »
Quote from: maximus
Cправился

Ну и в чем дело было?

Кстати, может знаешь что делать с таким косяком: Берешь Image1->Canvas, рисуешь там, затем расширяешь форму вместе с Image1, снова берешь Canvas, а рисуется только там, где он был взят в прошлый раз.

P.S. Максимус - в честь гладиатора МАксимуса или от слова Максим (МаксИмус)? =)))
« Last Edit: March 15, 2007, 18:46:11 by John_84 »

Offline maximus

  • Newbie
  • *
  • Posts: 3
  • Karma: +0/-0
Начертить график в BDS2006
« Reply #3 on: March 15, 2007, 21:38:53 »
LineTo/MoveTo(x+x0,y+y0); нада было я координаты центра paintboxa не указал(х0,у0), а эту строку убрать  x=x0;y=y0;

А у тебя координаты пересчитываются после изменения?

P.S.
и от того и от другого сразу
« Last Edit: March 15, 2007, 21:40:25 by maximus »

Offline John_84

  • Newbie
  • *
  • Posts: 38
  • Karma: +0/-0
    • http://
Начертить график в BDS2006
« Reply #4 on: March 17, 2007, 17:07:10 »
Да, программа все персчитывает. размеры прямоугольника для рисования берутся из imgGraph. Ну, то есть высота и ширина. Он сам расширяется -- проверено. выглядит результат так: белый прямоугольник, в котором кусок рисунка, а вокруг всё серое =(. Я думаю, там надо как-то старый канвас дропать...

Offline John_84

  • Newbie
  • *
  • Posts: 38
  • Karma: +0/-0
    • http://
Начертить график в BDS2006
« Reply #5 on: April 22, 2007, 13:33:41 »
Если кому интересно, то дело было в том, что с компонентом TImage сопоставляется растровое изображение, которое просто так не заресайзишь. Чтобы начать рисовать всё заново, нужно сначала убить старое изображение:
Code: [Select]
img->Picture = NULL;После этого можно рисовать всё заново и всё работает)
« Last Edit: April 22, 2007, 13:34:41 by John_84 »