CHART组件求助

q441233365 2013-07-09 01:46:49










在CHART组件AfterDraw里画线 窗体大小变了,曲线变了,怎么实现让我画的线也跟着走。
MainChart.Canvas.MoveTo(87,32);//x26
MainChart.Canvas.LineTo(87,-48+MainChart.Height);

或者是怎么让曲线变着 我画的线也跟着时间轴走

希望大家能理解我在说什么
...全文
208 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
simonhehe 2013-07-11
  • 打赏
  • 举报
回复
引用 6 楼 q441233365 的回复:
[quote=引用 4 楼 simonhehe 的回复:] 计算相对位置即可.

private
  const XPos = 87;
private
  FRatio : Double;

procedure TForm15.FormCreate(Sender: TObject);
begin
  //确定比例, 利用该比例计算X值
  FRatio := XPos  / cht1.Width;
end;

procedure TForm15.cht1AfterDraw(Sender: TObject);
var
  XLine : integer;
begin
  XLine := Round(cht1.Width * FRatio);
  cht1.Canvas.MoveTo(XLine, 32);
  cht1.Canvas.LineTo(XLine, -48+cht1.Height);
end;
方法不行啊,我试过了,chart大小变了他也有变,到那时不是跟着数据变的[/quote] 上边的是计算相对位置. 要跟着时间轴走, 依据的计算数据是不一样的
procedure TForm15.cht1AfterDraw(Sender: TObject);
var
  nCounter : integer;
begin
  if Series1.XValues.Count < 4 then
    exit;

  nCounter := Series1.CalcXPos(2);
  cht1.Canvas.Pen.Color := clRed;
  cht1.Canvas.MoveTo(nCounter, Series1.CalcYPosValue(536));
  cht1.Canvas.LineTo(nCounter, Series1.CalcYPosValue(504));

  nCounter := Series1.CalcXPos(3);
  cht1.Canvas.Pen.Color := clGreen;
  cht1.Canvas.MoveTo(nCounter, Series1.CalcYPosValue(Series1.MinYValue));
  cht1.Canvas.LineTo(nCounter, Series1.CalcYPosValue(Series1.MaxYValue));

end;
q441233365 2013-07-11
  • 打赏
  • 举报
回复
要那几条竖着的黑线随窗体大小改变,黑线也改变且位置必须和X轴数据同步
yadan_tanchfeng 2013-07-11
  • 打赏
  • 举报
回复
没看明白要什么,,呵呵
q441233365 2013-07-11
  • 打赏
  • 举报
回复
Series1.CalcYPosValue(536)); 请问参数536是什么意思啊
随行的太阳 2013-07-10
  • 打赏
  • 举报
回复
你用的是delphi自带的吧,我建议你用第三方控件还可以。
simonhehe 2013-07-10
  • 打赏
  • 举报
回复
计算相对位置即可.

private
  const XPos = 87;
private
  FRatio : Double;

procedure TForm15.FormCreate(Sender: TObject);
begin
  //确定比例, 利用该比例计算X值
  FRatio := XPos  / cht1.Width;
end;

procedure TForm15.cht1AfterDraw(Sender: TObject);
var
  XLine : integer;
begin
  XLine := Round(cht1.Width * FRatio);
  cht1.Canvas.MoveTo(XLine, 32);
  cht1.Canvas.LineTo(XLine, -48+cht1.Height);
end;
火龙岛主 2013-07-10
  • 打赏
  • 举报
回复
引用 楼主 q441233365 的回复:
在CHART组件AfterDraw里画线 窗体大小变了,曲线变了,怎么实现让我画的线也跟着走。 MainChart.Canvas.MoveTo(87,32);//x26 MainChart.Canvas.LineTo(87,-48+MainChart.Height); 或者是怎么让曲线变着 我画的线也跟着时间轴走 希望大家能理解我在说什么
跟着走,无非是你自己画的线按照某种算法与某个曲线有关系,既然这样你可以增加一个曲线,曲线的值同其他曲线计算的结果相同,让chart自己画比较好。不知这样讲你是否能明白。
q441233365 2013-07-10
  • 打赏
  • 举报
回复
引用 1 楼 delphi_freeman 的回复:
你用的是delphi自带的吧,我建议你用第三方控件还可以。
第3方也可以 能给个第3方实现的原理或代码吗
q441233365 2013-07-10
  • 打赏
  • 举报
回复
引用 3 楼 SmallHand 的回复:
[quote=引用 楼主 q441233365 的回复:]










在CHART组件AfterDraw里画线 窗体大小变了,曲线变了,怎么实现让我画的线也跟着走。
MainChart.Canvas.MoveTo(87,32);//x26
MainChart.Canvas.LineTo(87,-48+MainChart.Height);

或者是怎么让曲线变着 我画的线也跟着时间轴走

希望大家能理解我在说什么


跟着走,无非是你自己画的线按照某种算法与某个曲线有关系,既然这样你可以增加一个曲线,曲线的值同其他曲线计算的结果相同,让chart自己画比较好。不知这样讲你是否能明白。[/quote]





procedure TFormTest.BitBtn3Click(Sender: TObject);
var
Series7: TLineSeries;
i: Integer;
begin
Series7 := TLineSeries.Create(MainChart);
for i := 1 to DStringGrid.RowCount -1 do begin

Series7.Add(0,'',clRed);
if i = 50 then begin
Series7.Add(150,'',clRed);
end;

end;

MainChart.AddSeries(Series7);

这个是按你的方法弄出来的,线不直
q441233365 2013-07-10
  • 打赏
  • 举报
回复
引用 4 楼 simonhehe 的回复:
计算相对位置即可.

private
  const XPos = 87;
private
  FRatio : Double;

procedure TForm15.FormCreate(Sender: TObject);
begin
  //确定比例, 利用该比例计算X值
  FRatio := XPos  / cht1.Width;
end;

procedure TForm15.cht1AfterDraw(Sender: TObject);
var
  XLine : integer;
begin
  XLine := Round(cht1.Width * FRatio);
  cht1.Canvas.MoveTo(XLine, 32);
  cht1.Canvas.LineTo(XLine, -48+cht1.Height);
end;
方法不行啊,我试过了,chart大小变了他也有变,到那时不是跟着数据变的
q441233365 2013-07-10
  • 打赏
  • 举报
回复
引用 3 楼 SmallHand 的回复:
[quote=引用 楼主 q441233365 的回复:] 在CHART组件AfterDraw里画线 窗体大小变了,曲线变了,怎么实现让我画的线也跟着走。 MainChart.Canvas.MoveTo(87,32);//x26 MainChart.Canvas.LineTo(87,-48+MainChart.Height); 或者是怎么让曲线变着 我画的线也跟着时间轴走 希望大家能理解我在说什么
跟着走,无非是你自己画的线按照某种算法与某个曲线有关系,既然这样你可以增加一个曲线,曲线的值同其他曲线计算的结果相同,让chart自己画比较好。不知这样讲你是否能明白。[/quote] 这个我明白,我也这样走过,可是走出来线有点歪,应该是时间问题,你可以试下,不是一条直线的

5,390

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧