1、定义canvas的尺寸的时候最好用html的方式定义,用width和height的方式,用css会导致画布按照css设定的方式进行缩放,cavas内部是一个2d的渲染环境

2、一个canvas对应一个2d的渲染环境,绘制图形的操作都是在2d渲染环境中进行的

<canvas id="canvas-1"  style="border:solid 1px gray;" width = "400" height="400"></canvas>

  一个简单的例子

        <script type="text/javascript">var oCanvas = document.getElementById('canvas-1');var context = oCanvas.getContext('2d');//指向2d渲染环境的引用context.fillStyle = "#FF0000";context.fillRect(20,20,100,200)</script>在400*400 的画布上绘制一个距离左边上边20px的一个100*200的矩形用#ff0000颜色填充

  canvas的2d环境有很多api可以调用

3、fillStyle 属性设置或返回用于填充绘画的颜色、渐变或模式,上面我们直接用个的颜色,渐变指的是一个颜色渐变对象

a.首先是context创建一个线性的渐变createLinearGradient()  b.然后设置渐变的范围 createLinearGradient() 3.设定颜色渐变的阶段值(addColorStop())

                var grd=context.createLinearGradient(0,0,170,0);//这是一个从左到右的渐变grd.addColorStop(0,"black");grd.addColorStop(0.5,"red");grd.addColorStop(1,"white");//从黑-->红-->白context.fillStyle = grd;context.fillRect(0,0,150,100)

  

var my_gradient=ctx.createLinearGradient(0,0,0,170);//从上到下
my_gradient.addColorStop(0,"black");
my_gradient.addColorStop(1,"white");

  

                context.fillRect(0,0,200,200);var grd=context.createLinearGradient(0,0,200,200);对角线渐变grd.addColorStop(0,"black");grd.addColorStop(0.5,"red");grd.addColorStop(1,"white");context.fillStyle = grd;context.fillRect(0,0,200,200);

4、填充模式

用模式去填充图片createPattern(img,direction);

接收2个参数,img对象,和方向的参数repeat repeat-x repeat-y

很奇怪的是我们首次运行的时候并不能绘制出来,而是通过绑定事件的方式就可以绘制出来,

必须在最后加上context.fill()这个函数,否则无法绘制。

<img src="tet.jpg" id="img" οnclick="test()">

  

   function test () {var direction = 'repeat' || 'repeat-x' || 'repeat-y';var img = document.getElementById('img');var pat = context.createPattern(img,direction);context.rect(0,0,400,400);context.fillStyle=pat;context.fill();}

  

转载于:https://www.cnblogs.com/knightshibiao/p/3861015.html

canvas入门-1三种填充方式、渐变、模式相关推荐

  1. 分布式锁简单入门以及三种实现方式介绍(滴滴)

    很多小伙伴在学习Java的时候,总是感觉Java多线程在实际的业务中很少使用,以至于不会花太多的时间去学习,技术债不断累积!等到了一定程度的时候对于与Java多线程相关的东西就很难理解,今天需要探讨的 ...

  2. 分布式锁简单入门以及三种实现方式介绍

    分布式锁简单入门以及三种实现方式介绍 2018年01月11日 21:16:28 徐刘根 阅读数:37912 标签: 分布式 分布式锁 高并发 更多 个人分类: 集群分布式 版权声明:本文为博主原创文章 ...

  3. 分布式锁简单入门以及三种实现方式介绍_徐刘根的博客-CSDN博客

    原文地址 rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmled ...

  4. 五分钟教你使用vue-cli3创建项目(三种创建方式,小白入门必看)

    五分钟教你使用vue-cli3创建项目(三种创建方式,小白入门必看) 一.搭建vue环境 安装Nodejs 官网下载Nodejs,如果希望稳定的开发环境则下LTS(Long Time Support) ...

  5. spring入门之Spring 常用的三种注入方式

    Spring 常用的三种注入方式 Spring 通过 DI(依赖注入)实现 IOC(控制反转),常用的注入方式主要有三种:构造方法注入,set 方法注入,基于注解的注入. 一.通过构造方法注入 先简单 ...

  6. Kotlin实战练习——自定义圆形图片三种实现方式

    Kotlin实战练习--自定义圆形图片三种实现方式 前言 如今Kotlin越来越重要,本人也开始了Kotlin的学习.为了检测学习效果,加深学习印象,同时回顾一下以前的一些知识点,决定从写一个自定义圆 ...

  7. 自定义View的三种实现方式及自定义属性使用介绍

    自定义View的三种实现方式及自定义属性使用介绍 一 前言 二 三种自定义控件的方法 2.1 组合控件 2.2 继承控件 2.2.1 继承View类系统控件 2.2.2 继承ViewGroup类系统控 ...

  8. linux内核 struct page结构的三种存放方式

    目录 page struct的三种存放方式 1) FLATMEM 2) SPARSEMEM 3) SPARSEMEM_VMEMMAP 随着硬件能力的提升,系统内存容量变得越来越大.尤其是在服务器上,过 ...

  9. c语言单链表存储字符串,字符串的三种存储方式

    @[TOC] 在数据结构中,字符串要单独用一种存储结构来存储,称为串存储结构.这里的串指的就是字符串.无论学习哪种编程语言,操作最多的总是字符串.我们平常使用最多的存储结构无疑是利用定长数组存储.但是 ...

最新文章

  1. ConcurrentHashMap实现原理及源码分析
  2. 内存泄露问题改进(转自vczh)
  3. 异常处理——namenode启动成功但是没有namenode进程
  4. SAP ABAP应用服务器返回给前端的304 not modified是怎么设置的
  5. java普通类方法的区别是什么_java – 普通接口类和只有抽象方法的抽象类之间有什么区别吗?...
  6. JMS学习一(JMS介绍)
  7. 超炫彩光效数码产品线条感海报PSD分层模板,炫亮抓你眼球
  8. 蓝桥杯 ALGO-123 算法训练 A+B problem
  9. 如何保养与维护笔记本硬盘
  10. 表面粗糙度的基本评定参数是_表面粗糙度100个常见问题
  11. mybatis if where标签怎么使用?
  12. linux 图片转视频教程,如何在Ubuntu上转换图像、音频和视频格式
  13. java项目tkmybatis整合_springboot集成tk mybatis
  14. 深度学习图像分割:U-Net 体系结构
  15. 搜狗收录之搜狗推送神器
  16. matlab 三角波脉冲轨迹叠加,求解:两同频三角波叠加后的相位差(有程序,有图)...
  17. 【数据结构基础_有[*pHead]和[*pEnd]的单向链表_(C语言实现)】
  18. EXCEL解析:使用poi解析xlsx和xls后缀的excel文件
  19. 基于LSTM模型的共享自行车需求预测
  20. uni-app页面跳转以及传值

热门文章

  1. 谷歌大脑Wasserstein自编码器:新一代生成模型算法
  2. android的窗口机制分析------事件处理
  3. Android6.0 wakelock深入分析
  4. 深入理解 Android 的 IPC 机制--------Binder
  5. python谷歌网页爬虫_python爬虫入门01:教你在 Chrome 浏览器轻松抓包
  6. html div 纵向居中,内容居中分为div内容水平居中与div内容垂直居中
  7. thymeleaf 获取yml中的值_SpringBoot引入Thymeleaf
  8. python计算csv列平均值_利用Python读取CSV文件并计算某一列的均值和方差
  9. xp下administrator用户登录条不显示,怎么办?
  10. java byte 判断相等_转发收藏 | 史上最全Java面试题+面试网站推荐!(含答案)