目录

canvas绘制相关问题

背景知识:

为什么has.canvasPutImageData接口绘制的图像宽高与参数值不一致

问题现象:

开发者调用has.canvasPutImageData接口绘制canvas图像,预期效果是绘制的宽高和开发者传参width、height一致;实际效果是绘制的宽高比传参width、height要小。

问题原因:

has.canvasPutImageData的实现原理是将开发者传的像素数据(单位为px)转换为imageData对象(单位为vp),再通过canvas方法putImageData绘制在canvas组件上。由于单位转换(px→vp),最终导致canvas绘制宽高和传值width、height不一致。

解决措施:

建议开发者使用CanvasRenderingContext2D接口替代CanvasContext接口,CanvasRenderingContext2D.putImageData已解决相关问题,且新版接口在性能与功能支持方面均有显著优化,能够提供更为稳定和高效的渲染能力。

为什么has.canvasGetImageData返回的width、height与传入参数值不一致

问题现象:

开发者调用has.canvasGetImageData接口获取指定区域内的像素数据,预期结果是返回值width、height和传入的width、height一致;实际结果是返回值width、height比传入的width、height要大。

问题原因:

has.canvasGetImageData的实现原理是调用canvas方法getImageData获取canvas组件指定区域内的像素(接口参数默认单位为vp),得到返回值后,将数据返回给开发者。但是ASCF框架将返回值imageData对象的像素单位设置为px。由于像素单位不一致,导致接口的返回值width、height和开发者传的参数width、height不一致。

解决措施:

建议开发者使用CanvasRenderingContext2D接口替代CanvasContext接口,CanvasRenderingContext2D.getImageData已解决相关问题,且新版接口在性能与功能支持方面均有显著优化,能够提供更为稳定和高效的渲染能力。