RN canvas画布大小之谜
一、需求
在一个高640、宽360的canvas内画一些坐标点。
二、问题
坐标点只显示了一部分,剩下的点没显示(其坐标属于(640,360)区域)。
三、原因
canvas默认的画布大小是高150,宽300,这个范围以外的点自然显示不了,因此判断是画布大小的设置有问题。
设置画布大小的时候,分别用两种方式设置width和height:
1.style
<Canvas
style={{
width: 360,
height: 640,
backgroundColor: '#F5FCFF'
}}
//<Canvas />把自己这块地作为默认参数canvas传给handleCanvas
ref={this.handleCanvas}
/>
2.props
<Canvas
width={360}
height={640}
style={{
backgroundColor: '#F5FCFF'
}}
//<Canvas />把自己这块地作为默认参数canvas传给handleCanvas
ref={this.handleCanvas}
/>
结果,并没有改变什么...
深层原因:上述两种方案都仅仅改变的是canvas的props值

而画布的大小是attribute值,而非property值,而前两种方案修改的都是property值。attribute值如下图:

仍旧是默认的300和150。
三、解决
用attribute的方法修改attribute
handleCanvas = (canvas) => {
canvas.height = 640;
canvas.width = 360;
this.setState({ canvas });
}
结果:

attribute被修改,所有的点正常显示。
附一篇PC端的canvas解决方案:https://blog.csdn.net/csm0912/article/details/52963240
RN canvas画布大小之谜的更多相关文章
- 关于使用Css设置Canvas画布大小的问题
问题分析 我们在调整画布大小时,希望画布中的图形保持不变,只是改变画布本身的大小.但是如果使用Css设置画布大小,则会出现问题. 问题描述 如果使用Css设置Canvas画布的大小,则导致画布按比例缩 ...
- html 5 canvas画布整理
1. 创建canvas画布<canvas id="myCanvas" width="800" height="800" >< ...
- 【读书笔记《Android游戏编程之从零开始》】12.游戏开发基础(Canvas 画布)
1.Canvas 画布 画布类 Canvas 封装了图形和图片绘制等内容,此类常用的函数说明如下: drawColor(int color) 作用:绘制颜色覆盖画布,常用于刷屏 参数:颜色值,也可用十 ...
- canvas元素大小与绘图表面大小
原文链接:canvas总结:元素大小与绘图表面大小 前言 我们使用canvas的时候一般在canvas元素中直接设置它的width和height: 1 <canvas id="myCa ...
- Canvas 画布组件(官网翻译)
Canvas画布 The Canvas is the area that all UI elements should be inside. The Canvas is a Game Object w ...
- 微信小程序--canvas画布实现图片的编辑
技术:微信小程序 概述 上传图片,编辑图片大小,添加文字,改变文字颜色等 详细 代码下载:http://www.demodashi.com/demo/14789.html 概述 微信小程序--ca ...
- html5——canvas画布
一.基本介绍 1,canvas是画布,可以描画线条,图片等,现代的浏览器大部分都支持. canvas的width,height默认为300*150,要指定画布大小,不能用css样式的widh,heig ...
- canvas 画布 文字描边
总结一下,canvas 画布 文字描边的2种方法以及其不同的视觉效果: 效果图: 具体代码: <canvas id="canvas" width="800" ...
- [技术博客]海报图片生成——小程序canvas画布
目录 背景介绍 canvas简介 代码实现 难点讲解 圆角矩形裁剪失败之PS的妙用 编码不要过硬 对过长的文字进行截取 真机首次生成时字体不对 drawImage只能使用本地图片 背景介绍 目标:利用 ...
随机推荐
- npm安装包很慢
每次安装时: 可以通过指定 --registry,指向国内镜像服务器地址来加快安装速度. npm install -gd express --registry=http://registry.npm. ...
- Azure CLI2.0 捕获Linux ARM非托管磁盘虚拟机并创建ARM托管磁盘虚拟机
1.系统内部取消预配VM,创建了测试文件目录及文件:hlm20180904/ hlm20180904.txt 2.使用CLI2.0创建VM映像 a.登陆CLI2.0 备注:在 Azure 中国区使用 ...
- 【OpenCV3】直线拟合--FitLine()函数详解
一.FitLine()函数原型 CV_EXPORTS_W void fitLine( InputArray points, // 待输入点集(一般为二维数组或vector点集) OutputArray ...
- python全栈开发_day15_模块学习
一:模块 1)什么是模块 每一个py文件就是一个模块 导入模块,会编译执行 1.形成一个对应的pyc文件 2.产生该模块自己的店全局名称空间 3.在使用该模块的全局名称空间中产生一个名字(导入的模块名 ...
- 【性能测试】:关于loadrunner11录制Chrome浏览器脚本的方法
有些web端的程序只能通过chrome访问,如果用lr11录制的话,会抓不到包, 现在教一种方法,可以抓到包的,主体思路就是设置代理,让报文流量绕道走一下 一,在LR中的设置: 从菜单Tools-Re ...
- xshell本地上传文件至服务器
今天本地写了个项目,想传到服务器部署起来.就上网百度了一下挺多的,一个个记录下,如有雷同,纯属抄袭. lrzsz方法 rz # 检查是否安装 yum -y install lrzsz # 安装 rpm ...
- Flutter视图基础简介--Widget、Element、RenderObject
前言:Flutter官方文档里的一句话:you build your UI out of widgets(使用Flutter开发UI界面时,都是使用Widget),然而,Widget并不是我们真正看到 ...
- Mac下常用按键符号⌘(command)、⌥(option)、⇧(shift)、⇪(caps lock)、⌃(control)、↩(return)、⌅(enter)
常用符号如下: ⌘(command) ⌥(option) ⇧(shift) ⇪(caps lock) ⌃(control) ↩(return) ⌅(enter) 对应键盘的位置如下: 如果每次都不记得 ...
- 【Ubuntu】执行定时任务(cron)
1.打开定时任务配置文件 crontab -e 2.编写定时任务时间 命令和脚本例如: /3 * * * * /soft/config/test.sh 前5个字段为时间,后面的一个为命令 前5个含义为 ...
- MySQL设置远程连接服务器
默认情况下,mysql只允许本地登录,如果要开启远程连接,则需要修改/etc/mysql/my.conf文件. 一.修改/etc/mysql/my.conf找到bind-address = 127.0 ...