HQChart使用教程52- 自定义手机端K线图Tooltip

151 篇文章 33 订阅

内置Tooltip类

hqchart 内置一个tooltip类KLineTooltipPaint, 分时图为MinuteTooltipPaint, 如果不能满足你的输出格式要求,可以通过外部派生这个类,来改写

创建自定义tooltip类

function CustomTooltip()
{
     this.newMethod = KLineTooltipPaint;   //派生
     this.newMethod();
     delete this.newMethod;

     this.Draw = function () 
     {
     }
}

挂接自定义类到hqchart

再setoption里面我可以配置一个外部tooltip创建方法,来替换内置的tooltip.

//K线配置信息
this.Option= {
   Type:'历史K线图',   //创建图形类型
   .......
   ExtendChart:    //扩展图形
   [
        {Name:'KLineTooltip',Create: function () { return new CustomTooltip(); }  }  //手机端tooltip
   ],

这样创建tooltip的时候,就会创建外部的CustomTooltip类了

简单的实现下CustomTooltip

KLineTooltipPaint 有几个成员变量再画图时会使用
this.Canvas; //画布 通过画布把数据显示上去
this.ChartBorder; //边框信息
this.Data; //K线数据
this.Width //宽度
this.Height //高度
this.LineHeight //行高
this.Font //字体 数组
this.HQChart; //hqchart实例

//自定义tooltip
        function CustomTooltip()
        {
            this.newMethod = KLineTooltipPaint;   //派生
            this.newMethod();
            delete this.newMethod;

            this.Draw = function () 
            {
                // 判断当前是否显示tooltip
                if (!this.IsEnableDraw()) return;   

                this.KLineTitlePaint=this.HQChart.TitlePaint[0];
                var klineData=this.KLineTitlePaint.GetCurrentKLineData();
                if (!klineData) return;

                //设置tooltip高度, 宽度
                var maxText=' 擎擎: 9999.99亿 ';  //最长的输出
                this.Width=this.Canvas.measureText(maxText).width;
                this.Height=100;

                this.DrawBG();
                this.DrawItem(klineData);
                this.DrawBorder();
            }   

            //显示当前数据
            this.DrawItem=function(item)
            {
                console.log('[CustomTooltip::Draw]', item);

                var defaultfloatPrecision=2;//价格小数位数
                var left=this.GetLeft()+2;
                var top=this.GetTop()+3;

                this.Canvas.textBaseline="top";
                this.Canvas.textAlign="left";
                this.Canvas.font=this.Font[0];
                var labelWidth=this.Canvas.measureText('擎擎: ').width;

                //日期
                var text=item.Date.toString();
                this.Canvas.fillStyle=this.TitleColor;
                this.Canvas.fillText(text, left,top);

                //收盘价
                top+=this.LineHeight;  
                this.Canvas.fillStyle=this.TitleColor;
                this.Canvas.fillText("开盘:", left,top);
                text=item.Open.toFixed(defaultfloatPrecision);
                this.Canvas.fillText(text,left+labelWidth,top);
                
                //把需要的字段都输出就可以 这里就不写了
            }
        }

挂接分时图tooltip

var option=
{
    Type:'分钟走势图',
    ExtendChart: [{Name:'MinuteTooltip', Create:function() { return new CustomTooltip();} }]

如果还有问题可以加交流QQ群: 950092318

HQChart代码地址

https://github.com/jones2000/HQChart

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HQChart

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值