canvas入门-1三种填充方式、渐变、模式
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三种填充方式、渐变、模式相关推荐
- 分布式锁简单入门以及三种实现方式介绍(滴滴)
很多小伙伴在学习Java的时候,总是感觉Java多线程在实际的业务中很少使用,以至于不会花太多的时间去学习,技术债不断累积!等到了一定程度的时候对于与Java多线程相关的东西就很难理解,今天需要探讨的 ...
- 分布式锁简单入门以及三种实现方式介绍
分布式锁简单入门以及三种实现方式介绍 2018年01月11日 21:16:28 徐刘根 阅读数:37912 标签: 分布式 分布式锁 高并发 更多 个人分类: 集群分布式 版权声明:本文为博主原创文章 ...
- 分布式锁简单入门以及三种实现方式介绍_徐刘根的博客-CSDN博客
原文地址 rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmled ...
- 五分钟教你使用vue-cli3创建项目(三种创建方式,小白入门必看)
五分钟教你使用vue-cli3创建项目(三种创建方式,小白入门必看) 一.搭建vue环境 安装Nodejs 官网下载Nodejs,如果希望稳定的开发环境则下LTS(Long Time Support) ...
- spring入门之Spring 常用的三种注入方式
Spring 常用的三种注入方式 Spring 通过 DI(依赖注入)实现 IOC(控制反转),常用的注入方式主要有三种:构造方法注入,set 方法注入,基于注解的注入. 一.通过构造方法注入 先简单 ...
- Kotlin实战练习——自定义圆形图片三种实现方式
Kotlin实战练习--自定义圆形图片三种实现方式 前言 如今Kotlin越来越重要,本人也开始了Kotlin的学习.为了检测学习效果,加深学习印象,同时回顾一下以前的一些知识点,决定从写一个自定义圆 ...
- 自定义View的三种实现方式及自定义属性使用介绍
自定义View的三种实现方式及自定义属性使用介绍 一 前言 二 三种自定义控件的方法 2.1 组合控件 2.2 继承控件 2.2.1 继承View类系统控件 2.2.2 继承ViewGroup类系统控 ...
- linux内核 struct page结构的三种存放方式
目录 page struct的三种存放方式 1) FLATMEM 2) SPARSEMEM 3) SPARSEMEM_VMEMMAP 随着硬件能力的提升,系统内存容量变得越来越大.尤其是在服务器上,过 ...
- c语言单链表存储字符串,字符串的三种存储方式
@[TOC] 在数据结构中,字符串要单独用一种存储结构来存储,称为串存储结构.这里的串指的就是字符串.无论学习哪种编程语言,操作最多的总是字符串.我们平常使用最多的存储结构无疑是利用定长数组存储.但是 ...
最新文章
- ConcurrentHashMap实现原理及源码分析
- 内存泄露问题改进(转自vczh)
- 异常处理——namenode启动成功但是没有namenode进程
- SAP ABAP应用服务器返回给前端的304 not modified是怎么设置的
- java普通类方法的区别是什么_java – 普通接口类和只有抽象方法的抽象类之间有什么区别吗?...
- JMS学习一(JMS介绍)
- 超炫彩光效数码产品线条感海报PSD分层模板,炫亮抓你眼球
- 蓝桥杯 ALGO-123 算法训练 A+B problem
- 如何保养与维护笔记本硬盘
- 表面粗糙度的基本评定参数是_表面粗糙度100个常见问题
- mybatis if where标签怎么使用?
- linux 图片转视频教程,如何在Ubuntu上转换图像、音频和视频格式
- java项目tkmybatis整合_springboot集成tk mybatis
- 深度学习图像分割:U-Net 体系结构
- 搜狗收录之搜狗推送神器
- matlab 三角波脉冲轨迹叠加,求解:两同频三角波叠加后的相位差(有程序,有图)...
- 【数据结构基础_有[*pHead]和[*pEnd]的单向链表_(C语言实现)】
- EXCEL解析:使用poi解析xlsx和xls后缀的excel文件
- 基于LSTM模型的共享自行车需求预测
- uni-app页面跳转以及传值
热门文章
- 谷歌大脑Wasserstein自编码器:新一代生成模型算法
- android的窗口机制分析------事件处理
- Android6.0 wakelock深入分析
- 深入理解 Android 的 IPC 机制--------Binder
- python谷歌网页爬虫_python爬虫入门01:教你在 Chrome 浏览器轻松抓包
- html div 纵向居中,内容居中分为div内容水平居中与div内容垂直居中
- thymeleaf 获取yml中的值_SpringBoot引入Thymeleaf
- python计算csv列平均值_利用Python读取CSV文件并计算某一列的均值和方差
- xp下administrator用户登录条不显示,怎么办?
- java byte 判断相等_转发收藏 | 史上最全Java面试题+面试网站推荐!(含答案)