给Canvas上下文设置样式

<canvas class="myCanvas" width="700" height="500">
<p>添加恰当的反馈信息。</p>
</canvas>
<script>
var canvas = document.querySelector('.myCanvas');
</script>
  1. fillStyle & strokeStyle
ctx.fillStyle = rgba(0,0,0,0.2);
ctx.fillRect(25,25,25,25); ctx.strokeStyle = rgba(0,0,0,0.2);
ctx.strokeRect(25,25,25,25);
  1. 填充规则(['nonzero'-非零,'evenodd'-奇偶])
ctx.fill("evenodd");
  1. globalAlpha 设置透明度
ctx.strokeStyle = '#000';
ctx.globalAlpha = 0.2
ctx.strokeRect(25,25,25,25);

4.线条样式

  • lineWidth='': 设置线条宽度

  • lineCap=['butt','round','square']: 设置线条末端样式。

  • lineJoin=['bevel','round','miter']: 设定线条与线条间接合处的样式。

  • miterLimit=<number>: 限制当两条线相交时交接处最大长度。默认值是10。

  • setLineDash(segments): 参数是一个数组。一组描述交替绘制线段和间距长度的数字。

  • getLineDash(): 返回一个包含当前虚线样式,长度为非负偶数的数组。

  • lineDashOffset=<float>: 设置虚线样式的起始偏移量。

//eg:创建一个蚂蚁线的效果。它往往应用在计算机图形程序选区工具动效中
var ctx = document.getElementById('.my-canvas').getContext('2d'),offset = 0;
function draw() {
ctx.clearRect(0,0, canvas.width, canvas.height);
ctx.setLineDash([4, 2]);
ctx.lineDashOffset = -offset;
ctx.strokeRect(10,10, 100, 100);
}
(function march() {
offset++;
if (offset > 16) offset = 0;
/*draw();setTimeout(march, 20);*/
setInterval(draw,20)
})();
  1. Gradients设置渐变色
  • createLinearGradient(x1,y1,x2,y2): 直线渐变
  • createRadialGradient(x1,y1,r1,x2,y2,r2): 放射性渐变
  • addColorStop(offset[0~1],color):
//开始圆:圆心(100,100),半径100;结束圆:圆心(100,100),半径30
var gradient = ctx.createRadialGradient(100,100,100,100,100,30);
gradient.addColorStop(0,"white"); //开始圆设白色
gradient.addColorStop(1,"green"); //结束圆设绿色
ctx.fillStyle = gradient;
ctx.fillRect(0,0,200,200);
  1. Patterns设置图案
  • createPattern(img,repeatType['repeat','repeat-x','repeat-y','no-repeat']): 使用指定的图像创建模式
var img = new Image();
img.src = 'https://mdn.mozillademos.org/files/222/Canvas_createpattern.png';
var pattern = ctx.createPattern(img, 'repeat')
ctx.fillStyle = pattern;
ctx.fillRect(0,0,400,400);
  1. Text 设置文本
  • font='CSS value': 设置字体样式的属性。
  • fontAlign=['left','right','center','start','end']: 设置文本的对齐方式。
  • textBaseLine=['top','hanging','middle','alphabetic','ideographic','bottom']: 设置当前文本基线,默认值是 alphabetic。
  • direction=['ltr','rtl','inherit']: 描述当前文本方向
  • measureText(<text>): 返回一个关于被测量文本TextMetrics 对象包含的信息
ctx.font = '48px serif';
ctx.fontAlign = 'end';
ctx.textBaseLine = 'middle';
ctx.direction = 'rtl';
ctx.fillText('Hi!', 150, 50); var text = ctx.measureText("foo"); // TextMetrics object
text.width; // 16;

  1. Shadows设置阴影
  • shadowOffsetX = <float>: 描述阴影水平偏移距离
  • shadowOffsetY = <float>: 描述阴影垂直偏移距离
  • shadowBlur = <float>: 描述模糊效果程度,默认是0
  • shadowColor: 描述阴影颜色
ctx.shadowColor = "black";
ctx.shadowOffsetY = 10;
ctx.shadowOffsetX = 10;
ctx.shadowBlur = 30;
ctx.fillStyle = "green"
ctx.fillRect(10, 10, 100, 100);

JS学习-给Canvas上下文设置样式的更多相关文章

  1. js学习进阶-元素获取及样式设置

    var imgs = document.querySelectorAll("article img"); 获得article元素的直接或间接子孙的所有img元素, <arti ...

  2. Node.js学习记录(一)--安装设置篇

    安装Node window window上安装node可选择以下两种方式: 方式一:直接进入官网下载安装 进入node.js官网点击windows,选择.msi后缀的,根据自己的电脑选择对应的64位或 ...

  3. Cesium.js学习第一天(设置材质)

    var viewer = new Cesium.Viewer('cs'); var entity = viewer.entities.add({ position: Cesium.Cartesian3 ...

  4. amazeui学习笔记--css(基本样式2)--基础设置Base

    amazeui学习笔记--css(基本样式2)--基础设置Base 一.总结 1.盒子模型:外margin,内padding,这里的内外指的边框 2.border-box:Amaze UI 将所有元素 ...

  5. 进阶学习js中的执行上下文

    在js中的执行上下文,菜鸟入门基础 这篇文章中我们简单的讲解了js中的上下文,今天我们就更进一步的讲解js中的执行上下文. 1.当遇到变量名和函数名相同的问题. var a = 10; functio ...

  6. HTML 学习笔记 (canvas 基础)

    1.什么是Canvas canvas就是一个画布,可以进行画任何的线,图形,填充等一系列操作.这一切都是用Js操作的,另外Canvas不仅仅提供简单的二维矢量绘图,也提供了三维的绘图,以及图片处理等一 ...

  7. 我的three.js学习记录(三)

    此次的亮点不是three.js的3d部分,而是通过调用摄像头然后通过摄像头的图像变化进行简单的判断后进行一些操作.上篇中我通过简单的示例分析来学习three.js,这次是通过上一篇的一些代码来与摄像头 ...

  8. WebGL three.js学习笔记 使用粒子系统模拟时空隧道(虫洞)

    WebGL three.js学习笔记 使用粒子系统模拟时空隧道 本例的运行结果如图: 时空隧道demo演示 Demo地址:https://nsytsqdtn.github.io/demo/sprite ...

  9. WebGL three.js学习笔记 加载外部模型以及Tween.js动画

    WebGL three.js学习笔记 加载外部模型以及Tween.js动画 本文的程序实现了加载外部stl格式的模型,以及学习了如何把加载的模型变为一个粒子系统,并使用Tween.js对该粒子系统进行 ...

  10. 【Knockout.js 学习体验之旅】(2)花式捆绑

    本文是[Knockout.js 学习体验之旅]系列文章的第2篇,所有demo均基于目前knockout.js的最新版本(3.4.0).小茄才识有限,文中若有不当之处,还望大家指出. 目录: [Knoc ...

随机推荐

  1. git -----已经被跟踪文件如何在本地提交时忽略

    git update-index --assume-unchanged C.md 注:忽略后将不再拉取和提交c.md这个文件 git update-index --no-assume-unchange ...

  2. dfs-入门模板

    模板 void dfs()//参数用来表示状态 { if(到达终点状态) { ...//根据题意添加 return; } if(越界或者是不合法状态) return; if(特殊状态)//剪枝 ret ...

  3. #Cisco——配置链路聚合

    Cisco--配置链路聚合 一.什么是链路聚合. 链路聚合(英语:Link Aggregation)是一个计算机网络术语,指将多个物理端口汇聚在一起,形成一个逻辑端口,以实现出/入流量吞吐量在各成员端 ...

  4. MAC怎么获取文件路径 MAC获取文件路径的四种方法

    MAC怎么获取文件路径介绍 方法一:最简单的方法  右键文件或者文件夹,选择显示简介 2在弹出来的窗口中找到位置,即为路径,在mac 10.10之前的系统是正常的路径,10.10开始是小箭头代替/显示 ...

  5. npm发布和修改详细教程

    登录 登录npm账号(没有账号需要先前往npm注册 https://www.npmjs.com/) npm login npm notice Log in on https://registry.np ...

  6. 压力&负载理论

    一.定义: 1.压力测试     是给软件不断加压,强制其在极限的情况下运行,观察它可以运行到何种程度,从而发现性能缺陷,是通过搭建与实际环境相似的测试环境,通过测试程序在同一时间内或某一段时间内,向 ...

  7. Jenkins Pipeline(一) - 创建一个新的pipeline

    jenkins pipeline: 使用Goovy语法,以代码形式更自由地编写jenkins job. 代码文本被称为Jenkinsfile IDE: vscode 推荐安装vscode插件: jen ...

  8. 关于easyocr、paddleocr、cnocr之比较

    关于easyocr.paddleocr.cnocr之比较 EasyOCR 是一个使用 Java 语言实现的 OCR 识别引擎(基于Tesseract).借助几个简单的API,即能使用Java语言完成图 ...

  9. Exp6 MSF应用基础

    目录 一.实践内容 1 一个主动攻击实践 漏洞介绍 1 攻击前的准备 2 执行攻击 2 一个针对浏览器的攻击 3 一个针对客户端的攻击,以office为例 4 辅助模块的使用 二.问题回答 1 用自己 ...

  10. Pytorch实战学习(一):用Pytorch实现线性回归

    <PyTorch深度学习实践>完结合集_哔哩哔哩_bilibili P5--用Pytorch实现线性回归 建立模型四大步骤 一.Prepare dataset mini-batch:x.y ...