HQChart小程序教程2-如何使用新版2D画布创建一个K线图

151 篇文章 33 订阅

小程序 Canvas 2D 接口

小程序画布。2.9.0 起支持一套新 Canvas 2D 接口(需指定 type 属性),同时支持同层渲染,原有接口不再维护。
文档地址:https://developers.weixin.qq.com/miniprogram/dev/component/canvas.html

hqchart使用2D画布步骤

  1. 在.wxml文件种新建一个canvas元素, 增加类型(type)为2d.
<canvas class="historychart"  canvas-id="historychart" id='historychart' type="2d"  
    style="height:553px; width:375px;" 
    bindtouchstart='historytouchstart' bindtouchmove='historytouchmove' bindtouchend='historytouchend'>
</canvas>
  1. 通过select查询画布,并初始化hqchart.
onReady() 
{
    var self = this
    // 获取系统信息
    wx.createSelectorQuery()
        .select('#historychart')
        .fields({
            node: true,
            size: true,
        })
        .exec(self.CreateKLineChart.bind(this)); //初始化hqchart
},

CreateKLineChart:function(res)
{
    console.log('[App::CreateKLineChart] res ', res);
    
    //设置黑色风格
    var style = JSCommonHQStyle.GetStyleConfig(JSCommonHQStyle.STYLE_TYPE_ID.BLACK_ID);
    JSCommon.JSChart.SetStyle(style);
    
    //创建历史K线类
    var element = new JSCommon.JSCanvasElement();
    element.ID = 'historychart';
    element.CanvasNode = res[0];	//绑定通过select查询出来的画布节点
    element.Height = this.data.Height ;   //高度宽度需要手动绑定!! 微信没有元素类
    element.Width = this.data.Width ;
    this.HistoryChart = JSCommon.JSChart.Init(element); //把画布绑定到行情模块中
    this.HistoryChart.SetOption(this.HistoryOption);
},
  1. 其他的操作和老版的一样。
  2. 安卓系统如果十字光标错误,可以在setoption里面增加IsFullDraw属性
var option=
{
	.........
	IsFullDraw:true,                //不使用缓存每次都重绘
	........
}

使用微信新版画布经验总结

  1. 获取画布元素需要通过select来获取,然后通过这个元素来获取画布。
  2. 画布使用的时候需要获取手机像素倍数,然后画布大小需要放大手机的像素倍数
  3. 新版本画布操作是同步,而老版本是异步的,需要通过draw来操作。所以为了兼容老版本,在获取新的画布实例以后, 在这个实例里面创建一个空的draw() 方法, 这样调用draw就不会报错
function JSCanvasElement() 
{
    this.Height;
    this.Width;
    this.ID;
    this.WebGLCanvas;
    this.IsUniApp=false;
    this.CanvasNode=null;

    //获取画布
    this.GetContext = function () 
	{
        var canvas;
        if (this.CanvasNode && this.CanvasNode.node)  //新版本
        {
            const width = this.CanvasNode.width;
            const height = this.CanvasNode.height;

            var node = this.CanvasNode.node;
            node._height = height;
            node._width = width;
            console.log("[JSCanvasElement::GetContext] create by getContext('2d')");
            canvas = node.getContext('2d');
            const dpr = wx.getSystemInfoSync().pixelRatio; //获取分辨率比例
            node.width = width * dpr;
            node.height = height * dpr;
            canvas.scale(dpr, dpr);	//扩大
            canvas.draw = (bDraw, callback) => { if (callback) callback(); };
            canvas.DomNode = node;
        }
        else 	//老版本
        {
            canvas=wx.createCanvasContext(this.ID);
        }
  1. canvasToTempFilePath 在新版里面使用 canvas 参数(就是通过select查询出来的元素变量), 老版本是使用 canvasId, 这个需要注意下
  2. drawImage 新版本无法直接使用临时图片路径, 需要通过一个image来转换下。
if (self.Canvas && self.Canvas.DomNode) //新版本2D画布
{
    let tempImage = self.Canvas.DomNode.createImage();  //新版本的必须要装成image类 比较坑
    tempImage.src = this.Frame.ScreenImagePath;
    self.Canvas.clearRect(0, 0, width, height);
    self.Canvas.drawImage(tempImage, 0, 0, width, height);
    self.DrawDynamicChart(false);
}
else
{
    self.Canvas.drawImage(this.Frame.ScreenImagePath, 0, 0, width, height); //老版本直接放图片本地路径
    self.DrawDynamicChart(false);
}

canvas 2d不支持真机调试

官方说的, 不支持真机调试。
在这里插入图片描述

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

HQChart代码地址
地址:https://github.com/jones2000/HQChart

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
微信小程序,作为腾讯旗下的轻量级应用平台,凭借其独特的优势和特点,已经深入渗透到人们的生活中。以下是微信小程序的一些关键优势和特点,以及我们为您准备的资源介绍: 优势与特点: 即用即走,无需安装:用户只需在微信内搜索或扫码即可使用,无需下载安装,节省手机存储空间,也降低了用户的使用门槛。 跨平台兼容性:微信小程序可在多种操作系统和设备上运行,无需考虑不同平台的适配问题,为开发者提供了统一的开发环境。 丰富的API接口:微信提供了丰富的API接口,使得开发者能够轻松实现各种功能,如微信支付、用户授权、消息推送等。 强大的社交属性:微信小程序与微信生态紧密结合,可以充分利用微信的社交属性,实现用户裂变和增长。 低成本开发:相较于传统App,微信小程序的开发成本更低,周期更短,降低了企业的开发门槛和成本。 资源介绍: “微信小程序-项目源码-原生开发框架-含效果截图示例”这份资源,不仅包含了完整的微信小程序项目源码,而且基于原生开发框架,确保了代码的健壮性和可扩展性。源码中涵盖了微信小程序的基础架构、页面布局、功能实现等各个方面,通过详细的注释和说明,让您能够快速上手并掌握微信小程序的开发技巧。 同时,我们还提供了丰富的效果截图示例,让您能够直观地了解项目的最终效果,更好地评估项目的实用性和商业价值。无论您是前端开发者、小程序爱好者,还是希望拓展业务的企业,这份资源都将为您带来极大的帮助和启示。快来查看吧,开启您的小程序开发之旅!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

HQChart

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

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

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

打赏作者

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

抵扣说明:

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

余额充值