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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.05.2012, 21:17
gamezeldol gamezeldol вне форума
Прохожий
 
Регистрация: 21.02.2012
Сообщения: 16
Репутация: 10
По умолчанию График по координатам

Здравствуйте... при написании программы у меня возникли пару ошибок. Я никогда не работал с графиками, поэтому не могли бы помочь?
Рисую график по точкам... Точки берутся из Stringgrid x=cells[1,i], y=cells[2,i]. При нажатии кнопки нарисовать рисуется график, НО там появляется еще одна лишняя линия которая соеденяет начальную точку и конечную точку. КАк от нее избавиться? (на рисунке эта линия выделена красным)
и 2ой вопрос как сделать так чтобы график начал рисоваться от пересечения осей координат?
Код:
//находим центр
 x0:=image1.width div 2;
 y0:=image1.height div 2;
 //рисуем оси
 with image1.Canvas do
 begin
 pen.color:=clgreen;
 pen.width:=2;
 MoveTo(x0,0);
 LineTo(x0,ClientHeight);
 MoveTo(0,y0);
 LineTo(ClientWidth,y0);
 //рисуем график
 for i:=1 to StringGrid1.RowCount-1 do
    begin
   MoveTo(trunc(x),trunc(y));
   x:=strtoint(stringgrid1.cells[1,i]);
   y:=strtoint(stringgrid1.cells[2,i]);
   lineto(trunc(x),trunc(y));
   MoveTo(trunc(x),trunc(y));
Изображения
Тип файла: jpg Untitled.jpg (20.6 Кбайт, 7 просмотров)
Ответить с цитированием
  #2  
Старый 07.05.2012, 21:38
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

1. Оцените ваш код:
Код:
...
 for i:=1 to StringGrid1.RowCount-1 do
    begin
   MoveTo(trunc(x),trunc(y));
   x:=strtoint(stringgrid1.cells[1,i]);
   y:=strtoint(stringgrid1.cells[2,i]);
   lineto(trunc(x),trunc(y));
   MoveTo(trunc(x),trunc(y));
и подумайте, как это отработает в цикле.

2. Сдвинуть первые координаты.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 07.05.2012, 22:21
gamezeldol gamezeldol вне форума
Прохожий
 
Регистрация: 21.02.2012
Сообщения: 16
Репутация: 10
По умолчанию

Цитата:
Сообщение от angvelem
1. Оцените ваш код:
Код:
...
 for i:=1 to StringGrid1.RowCount-1 do
    begin
   MoveTo(trunc(x),trunc(y));
   x:=strtoint(stringgrid1.cells[1,i]);
   y:=strtoint(stringgrid1.cells[2,i]);
   lineto(trunc(x),trunc(y));
   MoveTo(trunc(x),trunc(y));
и подумайте, как это отработает в цикле.

2. Сдвинуть первые координаты.

по 2ому понял а вот по первому вопросу не могу разобраться
определяем точку, плтом проводим линию до 2ой точки, затем от 2ой к третей, Но зачем она возвращается от 3ей к первой?
Ответить с цитированием
  #4  
Старый 07.05.2012, 22:29
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от gamezeldol
... Но зачем она возвращается от 3ей к первой?
Используется лишняя команда LineTo. Проверяй свой цикл. Зачем в конце ещё один MoveTo? Куда он передвинет, если после этого идём на наращение переменной и снова MoveTo?

Смотри здесь и здесь.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.

Последний раз редактировалось angvelem, 07.05.2012 в 22:34.
Ответить с цитированием
  #5  
Старый 08.05.2012, 00:03
gamezeldol gamezeldol вне форума
Прохожий
 
Регистрация: 21.02.2012
Сообщения: 16
Репутация: 10
По умолчанию

Уже если честно перебрал все варианты... И Polyline попробывал... все равно рисуется одна лишняя линия.( уже не знаю че делать
Ответить с цитированием
  #6  
Старый 08.05.2012, 00:30
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от gamezeldol
Уже если честно перебрал все варианты... И Polyline попробывал... все равно рисуется одна лишняя линия.( уже не знаю че делать
Выложить исходник.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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