首页 > 其他分享 >HTML Canvas 画布

HTML Canvas 画布

时间:2023-10-03 21:13:09浏览次数:39  
标签:Canvas 渐变 ctx canvas 画布 HTML var 绘制

 

  HTML <canvas>画布元素用于通过脚本(通常是JavaScript)动态绘制图形。
  <canvas> 画布元素只是图形的容器。您必须使用脚本来实际绘制图形。
  <canvas>有几种用于绘制路径、框、圆、文本和添加图像的方法。

绘制canvas

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title><canvas></canvas></title>
</head>
<body>
    <canvas id="myCanvas"></canvas>
</body>
<script>
    var canvas = document.getElementById("myCanvas");
    var ctx = canvas.getContext("2d");
    ctx.fillStyle = "#666fff";
    ctx.fillRect(10, 10, 150, 75);
    </script>
</html>
1.找到 Canvas 画布元素
2.使用画布 getContext 内置对象绘制 它具有属性的绘图和方法
3.最后在画布上面画图 fillStyle 
fillStyle 属性可以是CSS颜色、渐变色或图案。默认填充样式为黑色。
fillRect(x,y,width,height) 方法在画布上绘制一个用填充样式填充的矩形:

 canvas 画布坐标

HTML 画布是一个二维网格。
画布左上角坐标是 (0,0)

绘制一条直线

要在画布上绘制直线,请使用以下方法:
moveTo(x,y) - 定义直线的起点
lineTo(x,y) - 定义直线的终点
画真正的直线,必须使用 "ink" 方法之一,如 stroke()。
<!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <meta http-equiv="X-UA-Compatible" content="IE=edge">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <title><canvas></canvas></title> </head> <body>     <canvas id="myCanvas"></canvas> </body> <script> var canvas = document.getElementById("myCanvas"); var ctx = canvas.getContext("2d"); ctx.moveTo(0, 0); ctx.fillStyle = "#666fff"; ctx.fillRect(0, 0, 200, 100); ctx.lineTo(200, 100); ctx.stroke();     </script> </html>

绘制一个园⚪

var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.beginPath()
ctx.arc(95, 50, 40, 0, 2 * Math.PI)
ctx.stroke();
beginPath() - 开始一条路径
arc(x,y,r,startangle,endangle) - 创建圆弧/曲线。使用 arc() 创建圆: 将开始角度设置为 0 ,将结束角度设置为 2*Math.PI。 x 和 y 参数定义圆心的 x 和 y 坐标。r 参数定义圆的半径
用 arc() 方法定义一个圆。然后使用 stroke() 方法实际绘制圆

canvas 渐变

var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");

// Create gradient
var grd = ctx.createLinearGradient(0, 0, 200, 0);
grd.addColorStop(0, "red");
grd.addColorStop(1, "white");

// Fill with gradient
ctx.fillStyle = grd;
ctx.fillRect(10, 10, 150, 80);

渐变可以用来填充矩形、圆、线、文本等。画布上的形状不限于纯色。
有两种不同类型的渐变:
createLinearGradient(x,y,x1,y1) - 创建线性渐变
createRadialGradient(x,y,r,x1,y1,r1) - 创建径向/圆形渐变
一旦我们有了渐变对象,我们必须添加两个或更多的颜色停止。
addColorStop() 方法指定颜色停止点及其沿渐变的位置。渐变位置可以是0到1之间的任意位置。
要使用渐变,请将 fillStyle 或 strokeStyle 属性设置为渐变,然后绘制形状(矩形、文本或直线)。

 

圆形渐变。用渐变填充矩形

var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");


// Create gradient
var grd = ctx.createRadialGradient(75, 50, 5, 90, 60, 100);
grd.addColorStop(0, "red");
grd.addColorStop(1, "white");

// Fill with gradient
ctx.fillStyle = grd;
ctx.fillRect(10, 10, 150, 80);

 canvas 画布文本

要在画布上绘制文本,最重要的属性和方法是:
font - 定义文本的字体属性
fillText(text,x,y) - 在画布上绘制"填充"文本
strokeText(text,x,y) - 在画布上绘制文本(无填充)
// 绘制文本
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.font = "30px Arial";
ctx.fillText("Hello World", 10, 50);
//strokeText() 不填充格式文本

// 添加颜色和文本居中
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.font = "30px Comic Sans MS";
ctx.fillStyle = "red";
ctx.textAlign = "center";
ctx.fillText("Hello World", canvas.width/2, canvas.height/2);

 canvas 图像

<!DOCTYPE html>
<html>
<body>

<p>要使用的图片:</p>

<img id="scream" width="220" height="277"
src="..." alt="图像" >

<p>画布:</p>

<canvas id="myCanvas" width="240" height="297"
style="border:1px solid #d3d3d3;">
您的浏览器不支持 HTML5 canvas 标签。
</canvas>

<script>
window.onload = function() {
    var canvas = document.getElementById("myCanvas");
    var ctx = canvas.getContext("2d");
    var img = document.getElementById("scream");
   ctx.drawImage(img, 10, 10);
};
</script>

</body>
</html>

 

 

标签:Canvas,渐变,ctx,canvas,画布,HTML,var,绘制
From: https://www.cnblogs.com/tcyweb/p/17741650.html

相关文章

  • [回顾-前端]从简陋的html到单网页再到全栈开发
    ......
  • HTML学习笔记
    一、标签在html中每个标签都是成对存在例如:<html> <body>HelloCSDN!</body></html>二、属性写在<>里面的用来定义功能的作用例如:<h2style="background-clolor:red;text-align:center">Helloworld!</h2&......
  • 深航电企业评价评级系统可视化(HTML,CSS,JS)
    一.项目背景深航电企业评价评级系统EERS是一款企业绩效评价平台,旨在为企业提供科学、全面、精准的绩效评价服务,帮助企业发现问题、改进管理,提高整体绩效。EERS评级系统借助大数据、云计算、人工智能等现代技术手段,将企业绩效数据进行多维度、系统化、动态化分析,为企业提供可视化......
  • HtmlReview
    超链接<aherf=""target=""></a>//target有两种模式_self(原窗口,默认)和_blank(新窗口)超链接+锚点<aherf="#momo">标题</a><h1id="momo">详情内容</h1>常用特殊字符大于&gt小于&lt空格&nbsp表格<table>......
  • Html和Css中的一些属性
    1、alt属性:alt属性是一个用于网页语言HTML和XHTML、为输出纯文字的参数属性,作用是当HTML元素本身的物件无法被渲染时,就显示alt(替换)文字作为一种补救措施。<imgclass="project_img"src="@/assets/music_project.jpg"alt="演示图"/>上面的代码就是如果图片加载不出来,那么就......
  • adoc转换html+UPF低功耗仿真例子+python转换C代码+readmemh的@使用
    adoc转换htmladoc这种格式是很多riscv文档使用的格式,该格式可以生成pdf,生成html。生成html的好处是,选中和翻译方便,复制粘贴方便。首先是gem软件要安装,这个软件似乎是ruby相关的(RubyGemsisapackagemanagerfortheRubyprogramminglanguagethatprovidesastandardform......
  • 初识HTML
    超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用来结构化Web网页及其内容的标记语言。网页内容可以是:一组段落、一个重点信息列表、也可以含有图片和数据表。正如标题所示,本文将对HTML及其功能做一个基本介绍。HTML到底是什么?HTML不是一门编程语言,而......
  • Go每日一库之147:goldmark(Markdown转html)
    简介使用Markdown书写结构化的文档和评论已经相当流行了,Web服务需要将用户编写的Markdown文本转换为html以便浏览器渲染,还常常需要对Markdown语法进行自定义扩展以实现个性化的功能。本期要介绍的**goldmark**就是Go生态中的一款Markdown解析器和扩展器,与GitHub......
  • python: Drawing Canvas
     #encoding:utf-8#版权所有2023涂聚文有限公司#许可信息查看:#描述:#Author:geovindu,GeovinDu涂聚文.#IDE:PyCharm2023.1python311#Datetime:2023/9/2121:28#User:geovindu#Product:PyCharm#Project:EssentialAlgor......
  • 通过HTML和JavaScript实现随机抽取幸运员工
    需求描述:公司经常会要求IT部门做一个小功能给公司随机抽取员工<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><t......