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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.06.2013, 20:09
cezer cezer вне форума
Прохожий
 
Регистрация: 01.06.2012
Сообщения: 44
Репутация: 10
Вопрос График на основе Brush.Canvas

Добрый вечер Ув. Программисты.
Делаю свой график вот код:

Код:
var
  Form1: TForm1;
  arPxl: array [0..7]  of TPoint;
  i, j, max, a, b: Integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  max := StrToInt(StringGrid1.Cells[0, 0]);
  for i:= 0 to 5 do
    for j:=0 to 0 do
      if StrToInt(StringGrid1.Cells[i, j]) > max then
        max := StrToInt(StringGrid1.Cells[i, j]);
  Label1.Caption := IntToStr(max);



image7.Refresh;
image7.Repaint;
image1.Visible:=false;
image2.Visible:=false;
image3.Visible:=false;
image4.Visible:=false;
image5.Visible:=false;
image6.Visible:=false;
Canvas.Brush.Color:=clred;

arPxl[0].X:=50;
arPxl[0].Y:=200;

arPxl[1].X:=50;
a:=round(((strtoint(StringGrid1.Cells[0, 0])/max))*100);
b:=(100-a)+100;
arPxl[1].Y:=b;
image1.Left:=arPxl[1].X-5;
image1.Top:=arPxl[1].Y-5;

arPxl[2].X:=100;
a:=round(((strtoint(StringGrid1.Cells[1, 0])/max))*100);
b:=(100-a)+100;
arPxl[2].Y:=b;
image2.Left:=arPxl[2].X-5;
image2.Top:=arPxl[2].Y-5;

arPxl[3].X:=150;
a:=round(((strtoint(StringGrid1.Cells[2, 0])/max))*100);
b:=(100-a)+100;
arPxl[3].y:=b;
image3.Left:=arPxl[3].X-5;
image3.Top:=arPxl[3].Y-5;

arPxl[4].X:=200;
a:=round(((strtoint(StringGrid1.Cells[3, 0])/max))*100);
b:=(100-a)+100;
arPxl[4].y:=b;
image4.Left:=arPxl[4].X-5;
image4.Top:=arPxl[4].Y-5;

arPxl[5].X:=250;
a:=round(((strtoint(StringGrid1.Cells[4, 0])/max))*100);
b:=(100-a)+100;
arPxl[5].y:=b;
image5.Left:=arPxl[5].X-5;
image5.Top:=arPxl[5].Y-5;

arPxl[6].X:=300;
//arPxl[6].y:=145;
a:=round(((strtoint(StringGrid1.Cells[5, 0])/max))*100);
b:=(100-a)+100;
arPxl[6].y:=b;
image6.Left:=arPxl[6].X-5;
image6.Top:=arPxl[6].Y-5;

arPxl[7].X:=300;
arPxl[7].y:=200;

image1.Hint:=(StringGrid1.Cells[0, 0]);
image2.Hint:=(StringGrid1.Cells[1, 0]);
image3.Hint:=(StringGrid1.Cells[2, 0]);
image4.Hint:=(StringGrid1.Cells[3, 0]);
image5.Hint:=(StringGrid1.Cells[4, 0]);
image6.Hint:=(StringGrid1.Cells[5, 0]);

Canvas.Polygon(arPxl);
image1.Visible:=true;
image2.Visible:=true;
image3.Visible:=true;
image4.Visible:=true;
image5.Visible:=true;
image6.Visible:=true;
Canvas.Polygon(arPxl);

end;

Вот исходники: График.rar

подскажите как сделать этот график универсальным.
А именно... Добавление сколько угодно в стринг грид данных, сколько угодно вспомогательных точек(image1 и тд). Ну вообщем чтоб он был универсальным для входных данных. За ранее спасибо.

С Уваженияем: Я.
Ответить с цитированием
  #2  
Старый 28.06.2013, 20:27
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Копец блондинский код.
Нужно чтобы несколько графиков на одном холсте рисовались, с общими осями?
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #3  
Старый 28.06.2013, 20:32
cezer cezer вне форума
Прохожий
 
Регистрация: 01.06.2012
Сообщения: 44
Репутация: 10
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
Копец блондинский код.
Нужно чтобы несколько графиков на одном холсте рисовались, с общими осями?
Да уж блондинский))) Сейчас график принимает только 6 точек а как сделать все динамически чтоб я мог допустим указываю сколько точек вписываю значение и он строит график. Вот так надо(
Ответить с цитированием
  #4  
Старый 28.06.2013, 20:53
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

так хочешь Построитель графиков ?
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
cezer (28.06.2013)
  #5  
Старый 28.06.2013, 21:03
cezer cezer вне форума
Прохожий
 
Регистрация: 01.06.2012
Сообщения: 44
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
Спасибо но пожалуй для меня пока слишком сложный этот самый "Построитель графиков" Есть потребность выводить столько точек сколько будет допустим добавленно в Edit. Я думал сделать все через циклы. Данамическое создание image, создание ячеек в стринггрид и тд. С созданием динамически image нашел но там не было последовательного номера для image чтоб присвоить ему координаты Top Left. как в стринггрид добавить ячейки знаю. А как все это организовать... Пока не додумался вот и прошу помощи.
Ответить с цитированием
  #6  
Старый 28.06.2013, 21:41
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Сейчас пишу программу для внешней железки, потребовался график для данных из SQLite базы. Перешерстил уйму разных вариаций графиков, в итоге пришлось писать собственный - универсальных не бывает.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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