TCHart. Как рисовать на канве поверх серий
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
Всем привет ! Собственно, сабжевый вопрос - Как рисовать на канве поверх серий?
Имеется 2 серии. Надо нарисовать на графиках стрелки, решил использовать канву компонета TCHart,но оказалось, что рисовать можно только, если нет ни одной серии. Рисовать поверх он нехочет (.
Как Можно исправить это ? Или как можно нарисовать стрелки на графике, если имеются 2 серии ?
Имеется 2 серии. Надо нарисовать на графиках стрелки, решил использовать канву компонета TCHart,но оказалось, что рисовать можно только, если нет ни одной серии. Рисовать поверх он нехочет (.
Как Можно исправить это ? Или как можно нарисовать стрелки на графике, если имеются 2 серии ?
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
А как написано рисование? В каком месте?
Думаю что все должно быть ОК, если субклассить TChart и рисовать в методе Paint после Inherited Paint;
Думаю что все должно быть ОК, если субклассить TChart и рисовать в методе Paint после Inherited Paint;
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
а какие стрелки хотел рисовать и на какой серии?

2Naeel Maqsudov - Можно чуток поподробнее ,как это осуществить ? А то не кодил уже 1.5 года ,ползабыл многое.
2Игорь Акопян - стрелки вверх, вниз, влево, вправо. Хочу, чтобы онирисовались поверх ВСЕХ серий, т.е. чтобы они были всегда видны. А так есть 2 серии. Каждая серия - отдельный график.
2Игорь Акопян - стрелки вверх, вниз, влево, вправо. Хочу, чтобы онирисовались поверх ВСЕХ серий, т.е. чтобы они были всегда видны. А так есть 2 серии. Каждая серия - отдельный график.
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
если стрелки не привязаны к сериям, т.е. никак не связаны с отображаемыми данными - сделай картинку и положи подложкой на чарт, не катит?
"поверх всех серий", если стрелки будут толстыми - не напрягает то что данные серий будут закрываться?
и вапче, функционал этих стрелок какой?
"поверх всех серий", если стрелки будут толстыми - не напрягает то что данные серий будут закрываться?
и вапче, функционал этих стрелок какой?

- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
как вариант, в чарте есть TArrowSeries можно создать в рантайм несколько штук с нужными значениями

- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Nowichok писал(а):2Naeel Maqsudov - Можно чуток поподробнее ,как это осуществить ?
Код: Выделить всё
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, TeeProcs, TeEngine, Chart;
type
TXChart = class(TChart)
procedure paint; override;
end;
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
procedure TXChart.paint;
begin
inherited paint;
self.Canvas.Rectangle(100,100,120,120);
end;
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
self.InsertControl(TXChart.Create(application));
end;
end.
Здесь рисование на канве (self.Canvas.Rectangle(100,100,120,120); ) происходит само собой в любой момент после того, как компонент завершил все свои собственные работы по отрисовке (inherited paint; ) себя любимого

Бесспортное неудобство - вставку его на форму, а также задание значений всех свойств придется делать в runtime. В дезайнере уже ничего не сделаешь. Но следующим шагом может быть уже созданием собственного компонента, и тогда эта проблема решается.
Да, подкласс - это мощно ))
Спасибо за пример.
НО хотелось бы полегче )
а как использщовать серию TArrowSeries у TCHart ? Как вектор рисовтаь ? AddXY Не работае.т.что вполне логично....
Спасибо за пример.
НО хотелось бы полегче )
а как использщовать серию TArrowSeries у TCHart ? Как вектор рисовтаь ? AddXY Не работае.т.что вполне логично....
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
тогда ответьте на пост №5 
статическая картинка не подходит?
ArrowSeries1.AddArrow( x0, y0, x1, y1, '', clBlue);
кроме того можно составить стрелки из нескольких серий, в том числе TChartShape

статическая картинка не подходит?
ArrowSeries1.AddArrow( x0, y0, x1, y1, '', clBlue);
кроме того можно составить стрелки из нескольких серий, в том числе TChartShape
