• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >html5 > 详解html5 Canvas drawing的示例代码 (二)

详解html5 Canvas drawing的示例代码 (二)

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-03

本文主要包含html5 ,Canvas ,drawing等相关知识,匿名希望在学习及工作中可以帮助到您

本篇主要讲html5 canvas中剪切区域(clip region)、分层、合成(compositing)、变换(Transformation)(旋转、缩放)功能如何应用。

先贴一个以下所有涉及到的实现运行的基本代码段:

Base Code

<!DOCTYPE html>
<html>
<head>        
<meta charset="utf-8" />       
<script type="text/javascript" src="modernizr-latest.js"></script>        <script type="text/javascript">
window.addEventListener("load", eventWindowLoaded, false);           
var Debugger = function() {};            
Debugger.log = function(message) {                
try {                   
 console.log(message);                
} 
catch (exception) {   return;   }           
}
                        
function eventWindowLoaded() { canvasApp();   }     
       
function canvasSupport() {                
return Modernizr.canvas;            
}
           
function canvasApp() {                
//是否支持CANVAS判断
if(!canvasSupport()) {                    
return;                
}               
 //取Canvas
var theCanvas = document.getElementById("canvasOne");               
 //获取绘图环境
contextvar context = theCanvas.getContext("2d");               
 //绘图方法的实现
function drawScreen() {}               
 //绘图方法调用执行                
drawScreen(); 
 }  
      
</script>    
</head>    
<body>        
<div style="position: absolute; top: 50px; left: 50px; border:1px solid #0000ff">           
 <canvas id="canvasOne" width="550" height="400">
 Your browser does not support HTML5 Canvas.            
</canvas>        
</div>    
</body>
</html>

以下所有实例代码,只要把上面的function drawScreen()替换掉即可!

clip region 裁剪区域

在clip region中,我们利用.save 与 .restore来把当前绘图状态压入堆栈与从堆栈中恢复;

使用.save保证裁切前的绘图状态;

通过context.rect()来确定要裁切的区域在位置;

通过context.clip()来执行裁切动作;

在Canvas上画图,只有在裁切区域的图形才能显示出来;

使用context.restore()再恢复到裁切前的状态;

function drawScreen() {
context.fillStyle = "black";
context.fillRect(0, 0, 200, 200);
context.save();
//clip the canvas to a 50×50 square starting at 0,0
context.rect(0, 0, 100, 100);
context.clip();
//red circle
context.beginPath();
context.strokeStyle = "red"; 
context.lineWidth = 5;
context.arc(100, 100, 100, (Math.PI/180)*0, (Math.PI/180)*360, false);
//full circle
context.stroke();
context.closePath();
context.restore();

//reclip to the entire canvas
context.rect(0, 0, 300, 300);
context.clip();
//draw a blue line that is not clipped
context.beginPath();
context.strokeStyle = "blue"; //need list of available colors
context.lineWidth = 5;
context.arc(100, 100, 50, (Math.PI/180)*0, (Math.PI/180)*360, false);
//full circle
context.stroke();
context.closePath();
}

实例效果图:

Compositing 合成

在Canvas上图形合成,指更好的处理图形的透明度及在画布上的层效果;

compositing操作中有两个比较重要的属性我们先来认识一下: globalAlpha and globalCompositeOperation

globalAlpha:指Canvas的透明度,默认值为1.0,范围是[0.0-1.0];

globalCompositeOperation:应用了“alpha” 及"transformations"的多个图形,是如何绘制的Canvas上的。

共有11种类型: copy\ destination-atop\destination-in\destination-out\destination-over\ lighter\ source-atop\source-in\source-out\source-over\xor

这11种类型中有两个特殊的词"source" and "destination":

"source":将要在Canvas上绘制的图形(新图形);

"destination":Canvas上当前显示的图形(旧图形);

  1. copy:指新图形会被保留,其它都被清除掉

  2. destination-atop:指显示新图形与重叠部分的旧图形,旧图形(重叠部分)显示在上层

  3. destination-in:指只显示旧图形的重叠部分的图形

  4. destination-out:指只显示旧图形不重叠部分的图形

  5. destination-over:指新旧图形都显示,把旧图形显示在上层

  6. lighter:指新旧图形都显示,新旧图形重叠部分作加色处理

  7. source-atop:指显示旧图表与重叠部分的新图形,新图形(重叠部分)显示在上层

  8. source-in:指只显示新图形重叠部分的图形

  9. source-out:指只显示新图形中不重叠部分的图形

  10. source-over:指新旧图形都显示,新图形显示在上层

  11. xor:指新旧图形都显示,新旧图形重叠的部分会变成透明。

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>test</title>
        <script type="text/javascript" src="../script/modernizr-latest.js"></script>
        <script type="text/javascript">
            window.addEventListener("load", eventWindowLoaded, );
 Debugger = () {
            };
            Debugger.log = (message) {
 {
                    console.log(message);
                }  (exception) {
;
                }
            }
 eventWindowLoaded() {
                canvasApp();
    
  


 

您可能想查找下面的文章:

  • HTML5的本地存储
  • Define charset for HTML5 Doctype
  • HTML5 canvas如何绘制动态径向渐变
  • 如何使用HTML5 Canvas绘制动态线性渐变
  • HTML5 canvas如何实现马赛克的淡入淡出效果(代码)
  • HTML5 canvas中如何绘制图像
  • 如何使用HTML5 canvas实现图像的马赛克
  • html5 canvas实现简单的双缓冲
  • HTML5 Canvas 图形组合是如何实现的?附代码
  • HTML5 figure标签是什么意思?HTML5 figure标签的使用方法详解

相关文章

  • 2018-12-03HTML5实践-使用CSS3 Media Queries实现响应式设计的代码分享
  • 2018-12-03如何快速开发多端应用?
  • 2018-12-03html5的画布canvas——画出简单的矩形、三角形实例代码_html5教程技巧
  • 2018-12-03借助HTML5 Canvas API制作一个简单的猜字游戏_html5教程技巧
  • 2018-12-03如何自定义video播放器样式?
  • 2018-12-03html5 datalist标签的用法是什么?这里有datalist标签的用法实例
  • 2018-12-03使用HTML5拍照示例代码_html5教程技巧
  • 2018-12-03『HTML5梦幻之旅』-动感圆圈
  • 2018-12-03在移动端有哪个javascript动画库最好用?
  • 2017-08-06使用HTML5 Canvas API中的clip()方法裁剪区域图像

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • HTML5 通信API 跨域门槛将不再高、数据推送也不再是梦_html5教程技巧
    • HTML5实战与剖析之表单那些事儿
    • 女生真的不适合写代码吗?
    • 突破canvas语法限制 让他支持链式语法
    • HTML5 Canvas:绘制渐变色
    • HTML5画布Canvas坐标轴转换、图案填充、渐变与阴影
    • 怎样使用JS获取函数参数名称
    • 详细介绍HTML5模拟齿轮动画的代码示例详情
    • 图像灰度化的相关文章推荐
    • HTML5-嵌入内容的详细介绍

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有