今天写项目时,突然发现canvas的一些公式不记得了,所以整理了一番,分享给大家。

Canvas

  1. 标签<canvas></canvas>
  2. 默认宽300,高150,不用用Css设置宽高
  3. 获取方法var ctx = cas.getcontext("2d"),该方法返回CanvasRenderingContext2D的类型对象,利用该方法绘图
  4. 基本绘图命令
    • 设置开始绘图位置:ctx.moveTo(x,y);
    • 设置直线到的位置:ctx.lineTo(x,y);
    • 描边绘制:ctx.stroke();
    • 填充绘制:ctx.fill();
    • 自动闭合路径:ctx.closePath();
    • 开启新的绘制:ctx.beginPath();
    • 设置描边颜色:ctx.strokeStyle;
    • 设置填充颜色:ctx.fillStyle;
    • 保存开始设置:ctx.save();
    • 重置到保存样式:ctx.restore();
  5. 线型相关属性
    • 设置线宽:ctx.linewidth;(数字即可)
    • 设置线末端类型:ctx.lineCap;(‘butt‘ 表示两端使用方形结束,‘round‘ 表示两端使用圆角结束,‘square‘ 表示突出的圆角结束)
    • 设置相交线的拐点:ctx.lineJoin;(‘round‘ 使用圆角连接,‘bevel‘ 使用平切连接,‘miter‘ 使用直角转)
    • 获得线段样式数组:ctx.getLineDash();
    • 设置线段样式:ctx.setLineDash();(数组形式设置)
    • 绘制线段偏移量:ctx.lineDashOffset;
  6. 矩形绘图命令
    • 绘制矩形:ctx.rect;(因为还需要fill或者stroke才可以看见效果,所以直接使用下面两种)
    • 绘制边框矩形:ctx.strokeRect(x,y,width,height);
    • 绘制填充矩形:ctx.fillRect(x,y,width,height);
    • 清除矩形区域:ctx.clearRect(x,y,width,height);
  7. 圆弧绘制命令
    • 绘制圆弧:ctx.arc(x,y,r,startAngle,endAngle,anticlockwise);参数 anticlockwise 表示是否采用默认的正向角度, 如果传入 true 表示逆指针为正. 该参数可选
    • 绘制相切弧:非重点
  8. 绘制文本命令
    • 绘制填充文字:ctx.fillText(text,x,y);
    • 绘制空心文字:ctx.strokeText(text,x,y);
    • 设置文本宽度:ctx.measureText();(非重点)
    • 设置字体样式:ctx.font;
    • 设置字体水平位置:ctx.textAlign;(start(默认), end, left, right, center)
    • 设置字体垂直位置:ctx.textBaseline;(top, middle, bottom, hanging, alphabetic, ideographic)
  9. 绘制图片命令
    • 绘制图片(3参数):ctx.drawImage(img,x,y);
    • 绘制图片(5参数):ctx.drawImage(img,x,y,width,height);
    • 绘制图片(9参数):ctx.drawImage(img,casx,casy,caswidth,casheight,x,y,width,height);
  10. 变换命令
    • 平移变换:ctx.translate(x,y);(x 表示水平移动, 正数向右, 负数向左;y 表示垂直移动, 正数向下, 负数向上)
    • 旋转变化:ctx.ratate(radian);(参数是弧度, 表示旋转的方式. 正数表示顺时针旋转, 负数表示逆时针旋转.)
    • 缩放变化:ctx.scale(x,y);(x控制水平缩放倍率,y控制水平缩放倍率,传1不做缩放)
时间: 2024-10-18 17:53:44

今天写项目时,突然发现canvas的一些公式不记得了,所以整理了一番,分享给大家。的相关文章

关于Eclipse创建Android项目时,会多出一个appcompat_v7的问题【转】

转自:http://blog.csdn.net/crazykbc/article/details/21553699 问题描述: 使用eclipse创建一个Android项目时,发现project列表中会多创建出一个appcompat_v7项目,再创建一个Android项目时,又会再多出一个appcompat_v7_2,如果再次创建,会以此类推地创建出appcompat_v7_x格式的“多余项目”出来(此情况在ADT升级为22.6.x版本后出现,22.3.x前的版本不会有) 查明原因: ADT在2

关于Eclipse创建Android项目时,会多出一个appcompat_v7的问题

问题描述: 使用eclipse创建一个Android项目时,发现project列表中会多创建出一个appcompat_v7项目,再创建一个Android项目时,又会再多出一个appcompat_v7_2,如果再次创建,会以此类推地创建出appcompat_v7_x格式的“多余项目”出来(此情况在ADT升级为22.6.x版本后出现,22.3.x前的版本不会有) 查明原因: ADT在22.3.x版本前没有出现该情况,升级为22.6.x版本后,才出现该情况,可以猜测是新版本导致.猜测到原因后可以分析下

已解决: idea创建并部署SpringMVC项目时 报错 java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

用IDEA创建并运行SpringMVC项目时,最初发现没有Servlet包,这个问题已在上篇解决,然而当我们尝试去运行此时的SpringMVC项目时,发现仍然有错误.ClassNotFoundException 笔者也是IDEA的新手,在网上查了很多资料 有帖子说是Tomcat Server 的  VM options 没有填写,按照帖子填上这一项后,重启项目依然报错,最后终于找到了问题的原因,spring springmvc 的jar包没有导入.. 下面来解决这个问题: 现在问题解决了 原文地

创建maven项目时,IntelliJ IDEA2019出现:Unable to import maven project: See logs for details 报错

开发环境:IntelliJ IDEA 2019.1.3 + Maven3.6.3 报错截图 主要原因 IntelliJ IDEA 2019.1.3 与 Maven3.6.3 不兼容问题 解决方案 将maven降级即可(本人是将3.6.3->3.3.9) maven下载链接[1] 其他 1.在写随笔时,发现有位老哥写的蛮详细地,在此推荐给你们,传送门→〇 2.本人是在学习SpringBoot时遇到的 3.刚遇到这个报错,还以为没什么大问题,后来在给SpringBoot主函数标注@SpringBoo

写弹窗时的一点发现

弹窗是很常见的网页特效,其组成大概分为两部分,其中主要的部分是位于页面中间的弹窗内容,另一部分是遮住页面的背景色.其实之前是有写过弹窗特效的.以为可以三几下把他拿下.写出来之后却发现是这样的.. 我一看就觉得奇怪明明内容框我是有设置了背景颜色#fff的怎么会是透明的.开始我还以为是z-index层没设置好.但看了一下,没问题啊,内容框是层级最高的了.

在android项目中导入自己写的jar文件发现不能打包到apk文件中

今天在写项目的时候导入自己写的jar文件,在调试的时候出现找不到jar文件的错误: 08-06 21:42:10.744: E/AndroidRuntime(2578): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.iotlife/com.example.iotlife.MainActivity}: java.lang.ClassNotFoundException: Di

从头开始写项目Makefile(四):伪目标

[版权声明:转载请保留出处:blog.csdn.net/gentleliu.Mail:shallnew at 163 dot com] 一般情况下,Makefile都会有一个clean目标,用于清除编译过程中产生的二进制文件.我们在第一节的Makefile就用到了这个 clean目标,该目标没有任何依赖文件,并且该目标对应的命令执行后不会生产clean文件. 像这种特点目标,它的规则所定义的命令不是去创建文件,而仅仅通过make指定目标来执行一些特定系统命令或其依赖为目标的规则(如all),称为

从头开始写项目Makefile(五):嵌套执行

[版权声明:转载请保留出处:blog.csdn.net/gentleliu.Mail:shallnew at 163 dot com] 在大一些的项目里面,所有源代码不会只放在同一个目录,一般各个功能模块的源代码都是分开的,各自放在各自目录下,并且头文件和.c源文件也会有各自的目录,这样便于项目代码的维护.这样我们可以在每个功能模块目录下都写一个Makefile,各自Makefile处理各自功能的编译链接工作,这样我们就不必把所有功能的编译链接都放在同一个Makefile里面,这可使得我们的Ma

从头开始写项目Makefile(三):变量的使用

[版权声明:转载请保留出处:blog.csdn.net/gentleliu.Mail:shallnew at 163 dot com] 仔细研究我们的之前Makefile发现,我们还有改进的地方,就是此处: target_bin : main.o debug.o ipc.o timer.o tools.o >---gcc -o target_bin main.o debug.o ipc.o timer.o tools.o 如果增加一个源文件xx.c的话,需要在两处或多处增加xx.o文件.我们可以