HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)


Posted in HTML / CSS onJuly 15, 2013

演示HTML5 Canvas Fill 与Stroke文字效果,基于Canvas如何实现纹理填充与描边。

一:颜色填充与描边
颜色填充可以通过fillStyle来实现,描边颜色可以通过strokeStyle来实现。简单示例
如下:

复制代码
代码如下:

// fill and stroke text
ctx.font = '60pt Calibri';
ctx.lineWidth = 3;
ctx.strokeStyle = 'green';
ctx.strokeText('Hello World!', 20, 100);
ctx.fillStyle = 'red';
ctx.fillText('Hello World!', 20, 100);

二:纹理填充与描边
HTML5 Canvas还支持纹理填充,通过加载一张纹理图像,然后创建画笔模式,创建纹理模式的API为ctx.createPattern(imageTexture,"repeat");第二参数支持四个值,分别为”repeat-x”, ”repeat-y”, ”repeat”,”no-repeat”意思是纹理分别沿着X轴,Y轴,XY方向沿重复或者不重复。纹理描边与填充的代码如下:
复制代码
代码如下:

var woodfill = ctx.createPattern(imageTexture,"repeat");
ctx.strokeStyle = woodfill;
ctx.strokeText('Hello World!', 20, 200);
// fill rectangle
ctx.fillStyle = woodfill;
ctx.fillRect(60, 240, 260, 440);

纹理图片:
HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke) 
三:运行效果
HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke) 
代码:
复制代码
代码如下:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="chrome=IE8">
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<title>Canvas Fill And Stroke Text Demo</title>
<link href="default.css" rel="stylesheet" />
<script>
var ctx = null; // global variable 2d context
var imageTexture = null;
window.onload = function() {
var canvas = document.getElementById("text_canvas");
console.log(canvas.parentNode.clientWidth);
canvas.width = canvas.parentNode.clientWidth;
canvas.height = canvas.parentNode.clientHeight;
if (!canvas.getContext) {
console.log("Canvas not supported. Please install a HTML5 compatible browser.");
return;
}
// get 2D context of canvas and draw rectangel
ctx = canvas.getContext("2d");
ctx.fillStyle="black";
ctx.fillRect(0, 0, canvas.width, canvas.height);
// fill and stroke text
ctx.font = '60pt Calibri';
ctx.lineWidth = 3;
ctx.strokeStyle = 'green';
ctx.strokeText('Hello World!', 20, 100);
ctx.fillStyle = 'red';
ctx.fillText('Hello World!', 20, 100);
// fill and stroke by pattern
imageTexture = document.createElement('img');
imageTexture.src = "../pattern.png";
imageTexture.onload = loaded();
}
function loaded() {
// delay to image loaded
setTimeout(textureFill, 1000/30);
}
function textureFill() {
// var woodfill = ctx.createPattern(imageTexture, "repeat-x");
// var woodfill = ctx.createPattern(imageTexture, "repeat-y");
// var woodfill = ctx.createPattern(imageTexture, "no-repeat");
var woodfill = ctx.createPattern(imageTexture, "repeat");
ctx.strokeStyle = woodfill;
ctx.strokeText('Hello World!', 20, 200);
// fill rectangle
ctx.fillStyle = woodfill;
ctx.fillRect(60, 240, 260, 440);
}
</script>
</head>
<body>
<h1>HTML5 Canvas Text Demo - By Gloomy Fish</h1>
<pre>Fill And Stroke</pre>
<div id="my_painter">
<canvas id="text_canvas"></canvas>
</div>
</body>
</html>
HTML / CSS 相关文章推荐
用CSS3将你的设计带入下个高度
Aug 08 HTML / CSS
纯CSS3大转盘抽奖示例代码(响应式、可配置)
Jan 13 HTML / CSS
使用Html5、CSS实现文字阴影效果
Jan 17 HTML / CSS
html5 迷宫游戏(碰撞检测)实例一
Jul 25 HTML / CSS
Html5 语法与规则简要概述
Jul 29 HTML / CSS
html5摇一摇代码优化包括DeviceMotionEvent等等
Sep 01 HTML / CSS
24个canvas基础知识小结
Dec 17 HTML / CSS
html5需遵循的6个设计原则
Apr 27 HTML / CSS
HTML5+CSS3:3D展示商品信息示例
Jan 03 HTML / CSS
canvas生成带二维码海报的踩坑记录
Sep 11 HTML / CSS
Html5新增了哪些功能
Apr 16 HTML / CSS
CSS中实现动画效果-附案例
Feb 28 HTML / CSS
css 如何让背景图片拉伸填充避免重复显示
Jul 11 #HTML / CSS
HTML5 Canvas渐进填充与透明实现图像的Mask效果
Jul 11 #HTML / CSS
HTML5 Canvas draw方法制作动画效果示例
Jul 11 #HTML / CSS
HTML5验证以及日期显示的实现详解
Jul 05 #HTML / CSS
html标签之Object和EMBED标签详解
Jul 04 #HTML / CSS
HTML5 Canvas实现平移/放缩/旋转deom示例(附截图)
Jul 04 #HTML / CSS
HTML5 Canvas鼠标与键盘事件demo示例
Jul 04 #HTML / CSS
You might like
浅析PHP水印技术
2007/02/14 PHP
PHP 超链接 抓取实现代码
2009/06/29 PHP
解析argc argv在php中的应用
2013/06/24 PHP
PHP中实现Bloom Filter算法
2015/03/30 PHP
php验证身份证号码正确性的函数
2016/07/20 PHP
JavaScript 继承详解(四)
2009/07/13 Javascript
获取客户端网卡MAC地址和IP地址实现JS代码
2013/03/17 Javascript
JQuery之focus函数使用介绍
2013/08/20 Javascript
nodejs获取本机内网和外网ip地址的实现代码
2014/06/01 NodeJs
javascript中sort()的用法实例分析
2015/01/30 Javascript
JS实现带鼠标效果的头像及文章列表代码
2015/09/27 Javascript
JS实现三个层重叠点击互相切换的方法
2015/10/06 Javascript
JavaScript定义数组的三种方法(new Array(),new Array('x','y')
2016/10/04 Javascript
全面解析vue中的数据双向绑定
2017/05/10 Javascript
vue使用vue-i18n实现国际化的实现代码
2018/04/08 Javascript
video.js 一个页面同时播放多个视频的实例代码
2018/11/27 Javascript
微信小程序用户授权弹窗 拒绝时引导用户重新授权实现
2019/07/29 Javascript
JavaScript生成随机验证码代码实例
2019/09/28 Javascript
利用JS如何获取form表单数据
2019/12/19 Javascript
Python简单调用MySQL存储过程并获得返回值的方法
2015/07/20 Python
在python的类中动态添加属性与生成对象
2016/09/17 Python
Python遍历文件夹和读写文件的实现方法
2017/05/10 Python
对pandas中Series的map函数详解
2018/07/25 Python
Python异常的检测和处理方法
2018/10/26 Python
Django csrf 两种方法设置form的实例
2019/02/03 Python
python add_argument()用法解析
2020/01/29 Python
python 遗传算法求函数极值的实现代码
2020/02/11 Python
中国茶叶、茶具一站式网上购物商城:醉品茶城
2018/07/03 全球购物
eBay加拿大站:eBay.ca
2019/06/20 全球购物
Linux管理员面试题 Linux admin interview questions
2014/11/01 面试题
一套英文Java笔试题面试题
2016/04/21 面试题
如何写自我鉴定
2014/03/19 职场文书
七匹狼男装广告词
2014/03/21 职场文书
单位实习工作证明怎么写
2014/11/02 职场文书
2015年学生会工作总结范文
2015/03/31 职场文书
《辉夜大小姐想让我告白》第三季正式预告
2022/03/20 日漫