canvas绘图基础

canvas使用场景

动画、h5游戏、图表


chart.js是使用canvas实现的一个做图表的库

phaser是使用canvas实现的做游戏的库


canvas坐标体系


关于画布大小的坑   画布默认大小为300*150

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>canvas</title>
    <style type="text/css">
        .canvas{
            border: 1px solid red;
            width: 100px;
            height: 100px;
        }
    </style>
</head>
<body>
<!--在css中设置画布的宽高会出问题 这是个坑  当然也可以使用canvas.width /height方式-->
<canvas id="myCanvas" class="canvas">
    您的浏览器不支持canvas
</canvas>

<canvas id="myCanvas2" class="canvas">
    您的浏览器不支持canvas
</canvas>
<script type="text/javascript">
    var canvas = document.getElementById('myCanvas');
    canvas.width = 100;//通过css样式控制的大小会有缩放
    canvas.height = 100;
    var ctx = canvas.getContext('2d');
    ctx.moveTo(0, 0);
    ctx.lineTo(100 , 100);
    ctx.stroke();


    var canvas2 = document.getElementById('myCanvas2');
    canvas2.width = 200;//这里才是画布大小
    canvas2.height = 200;
    var ctx2 = canvas2.getContext('2d');
    ctx2.moveTo(0, 0);
    ctx2.lineTo(200 , 200);
    ctx2.stroke();
</script>
</body>
</html>


结果如下

很明显左边的图被拉伸了有模糊的地方




lineto只是将路径存在内存中


stroke绘制


beginpath会将之前存在内存的路径清空


closepath会自动连接起始点和末尾点


绘制圆

ctx.beginPath();
ctx.arc(300 ,300, 50,0 ,2 * Math.PI);//圆心坐标 半径 起始弧度 到终点弧度
ctx.strokeStyle ="000";
ctx.stroke();

绘制矩形

//矩形
ctx.strokeRect(300,100,200,100)



平移、旋转、缩放

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<canvas id="myCanvas" width="600px" height="400px">

</canvas>
<script type="text/javascript">
    var canvas = document.getElementById("myCanvas");
    var ctx = canvas.getContext("2d");
    //平移的是坐标系的原点 要放在前面
    ctx.moveTo(0 , 0);
    ctx.lineTo(100, 100);
    ctx.stroke();


    ctx.translate(0 , 100);
    ctx.beginPath();
    ctx.moveTo(0 , 0);
    ctx.lineTo(100, 100);
    ctx.stroke();

    //旋转
    ctx.rotate(Math.PI / 4);
    ctx.beginPath();
    ctx.moveTo(0 , 0);
    ctx.lineTo(100, 100);
    ctx.strokeStyle = "red";
    ctx.stroke();

    //缩放
    ctx.scale(1, 0.5);
    ctx.fillRect(0, -100, 100, 100);
</script>
</body>
</html>

但是以上方法不常用




save 和restore  总是成对出现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<canvas id="myCanvas" width="600px" height="400px">

</canvas>
<script type="text/javascript">
    var canvas = document.getElementById("myCanvas");
    var ctx = canvas.getContext("2d");
    ctx.save();
    //平移的是坐标系的原点 要放在前面
    ctx.moveTo(0 , 0);
    ctx.lineTo(100, 100);
    ctx.stroke();


    ctx.translate(0 , 100);
    ctx.beginPath();
    ctx.moveTo(0 , 0);
    ctx.lineTo(100, 100);
    ctx.stroke();

    //旋转
    ctx.rotate(Math.PI / 4);
    ctx.beginPath();
    ctx.moveTo(0 , 0);
    ctx.lineTo(100, 100);
    ctx.strokeStyle = "red";
    ctx.stroke();

    //缩放
    ctx.scale(1, 0.5);
    ctx.fillRect(0, -100, 100, 100);


//恢复至save的状态
    ctx.restore();


    ctx.beginPath();
    ctx.moveTo(200,200);
    ctx.lineTo(300,300);
    ctx.stroke();
</script>
</body>
</html>







渐变

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<canvas id="myCanvas" width="600px" height="400px">

</canvas>
<script type="text/javascript">
    var canvas = document.getElementById("myCanvas");
    var ctx = canvas.getContext("2d");
    //线性渐变
    //                  第一个点的x,y坐标 第二个点的
  var linearGradient =  ctx.createLinearGradient(50,50, 150,150);
    linearGradient.addColorStop(0,'rgb(255,0,0)');
    linearGradient.addColorStop(1,'rgb(0,0,255)');//百分百位置的颜色
    ctx.fillStyle = linearGradient;
    ctx.fillRect(0,0,200,200);


//径向渐变                   第一个圆的坐标加半径  第二个的
   var radialGradient = ctx.createRadialGradient(400,150 ,0 , 400 ,150 ,100)
    radialGradient.addColorStop(0,'rgb(255,0,0)');
   radialGradient.addColorStop(1,'rgb(0,0,255)');
   ctx.fillStyle = radialGradient;
   ctx.beginPath();
   ctx.arc(400,150,100,0,Math.PI * 2);

   ctx.fill();
</script>
</body>
</html>




文字

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<canvas id="myCanvas" width="600px" height="400px">

</canvas>
<script type="text/javascript">
    var canvas = document.getElementById("myCanvas");
    var ctx = canvas.getContext("2d");

    var str = "hello world";
    ctx.font = "50px sans-serif";

    ctx.textAlign = "center";
    ctx.textBaseline = "top";
    ctx.fillText(str, 300,0); //文字  坐标
    ctx.strokeText(str,0 ,200);

    var width = ctx.measureText(str).width;//计算文本的宽度
    console.log(width);
    //文本高度 canvas没有直接的方法


</script>
</body>
</html>





资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率和项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称和描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本和预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建和发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push package和Deploy/Rollback。每个阶段都可以根据实际需求进行配置和调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率和项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试和部署,从而提高项目的整体质量和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值