大哥大姐们,问个问题:
现在有一个字符串格式的str := '0102030405060708090a0b0c0d0e0f0e0d0c0b0a090807060504030201',它代表的是一串16进制的数,每两个数字代表一个数据,转换为10进制就是1到15再到1共29个数据点,我想把这29个数据点画成图,用TChart画成一个等腰三角形,不用数据库,直接根据str来画图,怎么画呢?我光会画数据库里的点啊,不用数据库,该用什么语句来画图呢?可否写段代码举例说明一下?谢谢!!!

解决方案 »

  1.   

    方法一:使用面积图
    procedure TForm1.BitBtn1Click(Sender: TObject);
    begin
    //添加三个点
    Series1.Add(0);
    Series1.Add(100);
    Series1.Add(0)
    end;方法二:自己在画布上绘图处理procedure TForm1.BitBtn2Click(Sender: TObject);
    var
      p: array[0..2] of TPoint;
    begin
      p[0].X := 0;
      p[0].Y := 0;
      p[1].X := 100;
      p[1].y := 100;
      p[2].X := 200;
      p[2].Y := 0;
      with Chart1.Canvas do
      begin
        MoveTo(p[0].x,p[0].y);
        LineTo(p[1].x,p[1].y);
        LineTo(p[2].x,p[2].y);
        LineTo(p[0].x,p[0].y);
      end;
    end;
      

  2.   

    不好意思,忘了声明一下,我要画的是线图,我在这里说画三角形只是举个例子,str这一串数据是没有规律的,不定的,该怎样画呢?
      

  3.   

    那就用第二种方法,无非就是一给点然后连接另外一个点也可以用
    procedure TForm1.BitBtn1Click(Sender: TObject);
    var
      a : array[0..30] of Double;
      i :integer;
    begin
      Randomize;
      for I := 0 to 30 do
        a[i] :=  Random(100);
      with Series1 do
      begin
        //一个点一个点的画
        AddXY(10,10);
        AddXY(11,14);
        AddXY(12,100);
        AddXY(13,20);
        //按数组中的记录直接加载
        AddArray(a)
      end;end;
      

  4.   

    这个办法可以,不过还有一个问题呀,就是str中的16进制数怎样两位两位的转换为10进制并且一个点一个点的画到图里面呢?wudi大哥,你好人做到底帮我写段代码吧,假设str是个n长的字符串,n为2的倍数
      

  5.   

    不用了wudi大哥,我已经画出来了,多谢你提供的方法!!!