《HTML5 canvas开发详解(第2版)》——2.9 用图案填充形状

简介:

本节书摘来自异步社区《HTML5 canvas开发详解(第2版)》一书中的第2章,第2.9节,作者: 【美】Steve Fulton , Jeff Fulton 更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.9 用图案填充形状

本书将在第4章讲解如何在画布上使用位图,这里仅快速介绍如何将图像用作形状填充图案。

填充图案通过createPattern()函数进行初始化。它有两个参数:第一个是Image对象实例,第二个是String表示在形状中如何显示repeat图案。读者可以使用一个加载图像或者整个画布作为形状的填充图案。

有以下4种图像填充类型:

  • repeat;
  • repeat-x;
  • repeat-y;
  • no-repeat。
    现代的浏览器对这4种类型的支持程度不同,不过,普遍都能支持标准的repeat类型。先来介绍repeat类型,然后简单介绍其他3称类型。

图2-34显示了一个简单位图填充图案的功能测试,这是一个透明背景上的20×20的绿色圆形,存储为fill_20x20.gif文件。


<a href=https://yqfile.alicdn.com/be0ea95be5d0e0542af79f1513b10747a794ae7d.png" >

例2-25测试了使用repeat字符串创建一个充满小圆点的正方形,如图2-35所示。

例2-25 使用repeat填充图像文件

function drawScreen(){

   var fillImg = new Image();
   fillImg.src = 'fill_20x20.gif';
   fillImg.onload = function(){

     var fillPattern = context.createPattern(fillImg,'repeat');
     context.fillStyle = fillPattern;
     context.fillRect(0,0,200,200);
   }
}


f4726722d79e5bd12c203af27e3529511b3ee410

如果没有加载完成,最好不要使用Image实例。第4章将会进行详细讨论,现在只需简单创建一个在线onload事件处理器功能,在Image就绪之后就会调用此事件。repeat图案字符串非常好地填充到了200×200的正方形中。repeat字符串代码如例2-26所示,结果如图2-36~图2-38所示。

例2-26 使用no-repeat、repeat-x和repeat-y字符串

function drawScreen(){

   var fillImg = new Image();
   fillImg.src = 'fill_20x20.gif';

   fillImg.onload = function(){

     var fillPattern1 = context.createPattern(fillImg,'no-repeat');
     var fillPattern2 = context.createPattern(fillImg,'repeat-x');
     var fillPattern3 = context.createPattern(fillImg,'repeat-y');

     context.fillStyle = fillPattern1;
     context.fillRect(0,0,100,100);

     context.fillStyle = fillPattern3;
     context.fillRect(0,220,100,100);


     context.franslate(0,110);
     context.fillStyle = fillPattern2;
     context.fillRect(0,0,100,100);
   }
}

提示
每种浏览器显示这些图案的方式都不一样,而且总在变化。所以,在开发时要用新浏览器检验一下。


<a href=https://yqfile.alicdn.com/9aba561693aed1ebfb5f4d51902113eb854276f4.png" >


<a href=https://yqfile.alicdn.com/f807275c1cb2d29880a3015464506a9ef6bfac96.png" >


<a href=https://yqfile.alicdn.com/cb75326086920c1994ccab64481351f3b0d1248c.png" >

当repeat参数使用repeat-x和repeat-y字符串时,只有Firefox看起来差别明显。第4章将更多地讲解位图填充和其他用法的示例。

请注意,如果要让repeat-x填充模式生效,则需要先平移到所绘制点的x、y坐标,然后使用是(0,0)作为fillRect函数的x、y坐标的参数。

相关文章
|
11天前
|
关系型数据库 MySQL
web简易开发(二){html5+php实现文件上传及通过关键字搜索已上传图片)}
web简易开发(二){html5+php实现文件上传及通过关键字搜索已上传图片)}
|
3天前
|
移动开发 前端开发 HTML5
HTML5 Canvas发光Loading源码
一款基于HTML5 Canvas的发光Loading加载HTML源码。Loading旋转图标是在canvas画布上绘制的,整个loading动画是发光3D的视觉效果
12 1
HTML5 Canvas发光Loading源码
|
4天前
|
移动开发 前端开发 HTML5
Canvas实现超酷Loading动画HTML代码
之前我们分享过很多基于CSS3的Loading动画效果,相信大家都很喜欢。今天我们要来分享一款基于HTML5 Canvas的发光Loading加载动画特效。Loading旋转图标是在canvas画布上绘制的,整个loading动画是发光3D的视觉效果,HTML5非常强大。
10 1
Canvas实现超酷Loading动画HTML代码
|
7天前
|
移动开发 前端开发 JavaScript
:掌握移动端开发:HTML5 与 CSS3 的高效实践
:掌握移动端开发:HTML5 与 CSS3 的高效实践
22 1
|
12天前
|
缓存 前端开发 JavaScript
【专栏:HTML与CSS移动端开发篇】移动端网页性能优化策略
【4月更文挑战第30天】本文探讨了移动端网页性能优化的重要性,并提出了优化策略。HTML方面,建议精简结构、使用语义化标签、异步加载脚本和压缩文件;CSS优化包括精简样式、使用CSS3动画、媒体查询和压缩文件。其他策略涉及图片和字体压缩、缓存利用、数据压缩、减少HTTP请求及根据网络状态调整加载。综合运用这些策略能提升网页性能和用户体验。
|
12天前
|
前端开发 JavaScript UED
【专栏:HTML与CSS移动端开发篇】移动端触摸事件与手势识别
【4月更文挑战第30天】本文探讨了移动端触摸事件和手势识别在网页开发中的重要性。介绍了基础触摸事件如`touchstart`, `touchmove`, `touchend`, `touchcancel`及相关属性。文章列举了处理触摸事件的方法,包括单点触摸、多点触摸、滑动、长按、捏合缩放、旋转检测和事件代理。建议使用第三方库如Hammer.js简化手势处理,并分享了最佳实践,如避免意外触摸、提供视觉反馈、考虑性能和跨设备测试。理解并有效利用这些技术能提升用户交互体验。
|
12天前
|
编解码 前端开发 UED
【专栏:HTML 与 CSS 移动端开发篇】CSS 媒体查询与移动端特定样式
【4月更文挑战第30天】CSS媒体查询在移动端开发中至关重要,它基于设备特性(如屏幕尺寸、分辨率、方向)应用特定样式,实现响应式设计。通过`@media`规则定义条件,如`(max-width: 600px)`,当屏幕宽度小于或等于600px时应用相应样式。常见条件包括屏幕宽度、高度、方向和分辨率。媒体查询可用于响应式布局、导航菜单优化、图片加载及字体调整。在实践中,需注意保持查询简洁,充分测试,渐进增强,并提前规划。掌握媒体查询能提升移动端用户体验,创造更优秀的网页设计。
|
12天前
|
编解码 移动开发 前端开发
【专栏:HTML与CSS移动端开发篇】使用Viewport Meta标签优化移动端显示
【4月更文挑战第30天】本文介绍了HTML的Viewport Meta标签在移动端网页优化中的作用。Viewport Meta标签定义了视口属性,如宽度、高度、初始缩放等,解决移动设备因屏幕尺寸差异导致的显示问题。主要属性包括width(常用device-width)、initial-scale、maximum-scale、minimum-scale和user-scalable。
|
12天前
|
编解码 缓存 前端开发
【专栏:HTML与CSS移动端开发篇】移动端网页布局与适配
【4月更文挑战第30天】本文探讨了如何使用HTML和CSS优化移动端网页布局与适配,强调响应式设计、灵活布局和媒体查询的重要性。针对移动设备的屏幕尺寸、操作方式、网络速度和性能差异,提出了断点选择、触摸优化、图像和性能优化等最佳实践。测试和调试、框架工具的应用也是关键步骤,以确保在多设备上提供优秀用户体验。开发者需持续学习新趋势和工具,以适应移动端发展。
|
12天前
|
编解码 前端开发 数据挖掘
【专栏:HTML 与 CSS 移动端开发篇】移动优先的网页设计理念
【4月更文挑战第30天】本文探讨了移动优先的网页设计在HTML和CSS移动端开发中的重要性。随着移动设备普及,移动优先设计理念旨在首先满足移动端用户需求,提供良好体验。通过响应式设计、简洁布局、优化资源和触摸友好交互,确保网站在移动设备上的表现。实施步骤包括分析用户需求、设计原型、编写代码和测试优化。注意避免过度设计,保持一致性,关注性能,并适应不同平台。移动优先设计是提升用户体验和竞争力的关键,随着技术发展,这一理念将持续演进。