canvas基础入门(一)绘制线条、三角形、七巧板

复杂的内容都是有简单的线条结合而成的,想要绘制出复杂好看的内容先从画直线开始

canvas绘制直线先认识几个函数

beginPath();开始一条路径,或重置当前的路径

moveTo(x,y);用于规定直线的起点坐标

lineTo(x,y);用于规定直线的终点坐标

closePath();方法创建从当前点到开始点的路径

stroke();方法会实际地绘制出通过 moveTo() 和 lineTo() 方法定义的路径。默认颜色是黑色

利用上面的函数就可以简单的画出直线了

代码

<canvas id="canvas" style="border: 1px solid #000;">当前浏览器不支持canvas,请更换浏览器再试</canvas>
<script type="text/javascript">
    window.onload = function() {

        var canvas = document.getElementById("canvas");
       canvas.width = 1024;//设置canvas宽高
       canvas.height = 768;
       var context = canvas.getContext("2d");
        context.beginPath();
       context.moveTo(100, 100);
       context.lineTo(700, 700);
        context.closePath();
        context.stroke();
    }
</script>

接下来个直线添加点样式:

lineWidth;属性设置或返回当前线条的宽度,以像素计

strokeStyle;属性设置或返回用于笔触的颜色、渐变或模式

fillStyle;属性设置或返回用于填充绘画的颜色、渐变或模式

fill();方法填充当前的图像(路径)。默认颜色是黑色

JavaScript代码如下:

<canvas id="canvas" style="border: 1px solid #000;">当前浏览器不支持canvas,请更换浏览器再试</canvas>
<script type="text/javascript">
    window.onload = function() {

        var canvas = document.getElementById("canvas");
      canvas.width = 1024;//设置canvas宽高
      canvas.height = 768;
      var context = canvas.getContext("2d");
        context.beginPath();
      context.moveTo(100, 100);
      context.lineTo(700, 700);
        context.closePath();     context.lineWidth = 5;    context.strokeStyle = "red";
        context.stroke();
    }
</script>

会绘制直线后我们接着来绘制一些图像,要绘制图像也是使用lineTo(x,y),绘制三角形,代码如下

<canvas id="canvas" style="border: 1px solid #000;">当前浏览器不支持canvas,请更换浏览器再试</canvas>
<script type="text/javascript">
    window.onload = function() {

        var canvas = document.getElementById("canvas");
       canvas.width = 1024;//设置canvas宽高
       canvas.height = 768;
       var context = canvas.getContext("2d");
         context.beginPath();
       context.moveTo(100, 100);
       context.lineTo(700, 700);
      context.lineTo(100, 700);
      context.lineTo(100, 100);
         context.closePath();
         context.lineWidth = 5;
      context.strokeStyle = "red";
         context.stroke();
    }
</script>

这个时候在是实现一些复杂的图像,七巧板:

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title>canvas绘制七巧板</title>
    </head>

    <body>
        <canvas id="canvas" style="border: 1px solid #aa;display: block;margin: 50px auto;">
            当前浏览器不支持Canvas,请更换浏览器再试
        </canvas>

        <script type="text/javascript">
            var tangram = [
                    {p: [{x: 0,y: 0}, {x: 800,y: 0}, {x: 400,y: 400}],color: "#caff76"},
                    {p: [{x: 0,y: 0}, {x: 400,y: 400}, {x: 0,y: 800}],color: "#67becf"},
                    {p: [{x: 800,y: 0}, {x: 800,y: 400}, {x: 600,y: 600}, {x: 600,y: 200}],color: "#ef3d61"},
                    {p: [{x: 600,y: 200}, {x: 600,y: 600}, {x: 400,y: 400}],color: "#f9f51a"},
                    {p: [{x: 400,y: 400}, {x: 600,y: 600}, {x: 400,y: 800}, {x: 200,y: 600}],color: "#a594c0"},
                    {p: [{x: 200,y: 600}, {x: 400,y: 800}, {x: 0,y: 800}],color: "#fa8ecc"},
                    {p: [{x: 800,y: 400}, {x: 800,y: 800}, {x: 400,y: 800}],color: "#f6ca29"},
            ];

            window.onload = function() {
                var canvas = document.getElementById("canvas");

                canvas.width = 800;
                canvas.height = 800;

                var context = canvas.getContext("2d");

                for(var i = 0; i < tangram.length; i++) {
                    draw(tangram[i], context)
                }
            }

            function draw(plece, cxt) {
                cxt.beginPath();
                cxt.moveTo(plece.p[0].x, plece.p[0].y);
                for(var i = 1; i < plece.p.length; i++) {
                    cxt.lineTo(plece.p[i].x, plece.p[i].y);
                }
                cxt.closePath();
                cxt.fillStyle = plece.color;
                cxt.fill();

                cxt.strokeStyle = "black";
                cxt.lineWidth = 3;
                cxt.stroke();
            }
        </script>
    </body>

</html>

原文地址:https://www.cnblogs.com/YAN-HUA/p/9215009.html

时间: 2024-08-25 13:05:44

canvas基础入门(一)绘制线条、三角形、七巧板的相关文章

canvas的基础入门

canvas是定义在浏览器上的画布.它不仅仅是一个标签元素更是一个编程工具是一套编程的接口.利用它可以开发出很多东西,比如动画,游戏,动态的图表等富有变现力和感染力的应用.还可以开发出绚丽的3D动态效果.接下来我们一起学习! 一. 创建canvas 1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5 <meta charset="UTF-8"> 6 <meta na

Android基础入门教程——8.3.16 Canvas API详解(Part 1)

Android基础入门教程--8.3.16 Canvas API详解(Part 1) 标签(空格分隔): Android基础入门教程 本节引言: 前面我们花了13小节详细地讲解了Android中Paint类大部分常用的API,本节开始我们来讲解 Canvas(画板)的一些常用API,我们在Android基础入门教程--8.3.1 三个绘图工具类详解 中已经列出了我们可供调用的一些方法,我们分下类: drawXxx方法族:以一定的坐标值在当前画图区域画图,另外图层会叠加, 即后面绘画的图层会覆盖前

Android基础入门教程——8.3.18 Canvas API详解(Part 3)Matrix和drawBitmapMash

Android基础入门教程--8.3.18 Canvas API详解(Part 3)Matrix和drawBitmapMash 标签(空格分隔): Android基础入门教程 本节引言: 在Canvas的API文档中,我们看到这样一个方法:drawBitmap(Bitmap bitmap, Matrix matrix, Paint paint) 这个Matrix可是有大文章的,前面我们在学Paint的API中的ColorFilter中曾讲过ColorMatrix 颜色矩阵,一个4 * 5 的矩阵

HTML5 Canvas 学习笔记(canvas绘制线条、矩形、多边形、圆形、圆环、组合图形、文字、自定义图像)

学习资源:http://www.w3school.com.cn/html5/html_5_canvas.asp   http://blog.csdn.net/clh604/article/details/8536059   http://www.jb51.net/html5/70307.html 一.对 canvas 的理解 <canvas>标签是 HTML5 中的新标签,像所有的 dom 对象一样它有自己本身的属性.方法和事件. canvas 是用来在网页上绘制图形的(我们通常称之为画布),

canvas入门(绘制篇)

什么是canvas? canvas即画布,HTML5的canvas元素可以在其矩形区域绘制图像. 创建canvas,通过js创建context对象 <canvas id="canvas" width="500" height="300"></canvas> <script type="text/javascript"> var c=document.getElementById("

使用html5 Canvas绘制线条(直线、折线等)

使用html5 Canvas绘制直线所需的CanvasRenderingContext2D对象的主要属性和方法(有"()"者为方法)如下: 属性或方法 基本描述 strokeStyle 用于设置画笔绘制路径的颜色.渐变和模式.该属性的值可以是一个表示css颜色值的字符串.如果你的绘制需求比较复杂,该属性的值还可以是一个CanvasGradient对象或者CanvasPattern对象 globalAlpha 定义绘制内容的透明度,取值在0.0(完全透明)和1.0(完全不透明)之间,默认

Canvas绘制线条模糊的解决方案

前段时间,做一个跨平台app项目,需要绘制分时图和K线图.找了很多开源的js的图表库,包括echarts.highcharts等等,都不是很满意,原因有2: 1.太臃肿,我实际上只要一个分时和一个K线图表,最多搭配几个线形图 2.不满足需求.主要就是分时图,国内玩的js图表库,几乎都没有分时图.都是用1分钟线的收盘价线来做的,和中国股民的使用习惯完全不搭界. 多年前有人开源了一个js绘制股票图形的库,叫做html54stock,图像表现上很符合中国人的使用习惯,但是也有问题: 1.封装不好,很多

Android OpenGL入门示例:绘制三角形和正方形 (附完整源码)

Android上对OpenGl的支持是无缝的,所以才有众多3D效果如此逼真的游戏,在Camera的一些流程中也有用到GLSurfaceView的情况.本文记录OpenGL在Android上的入门级示例,绘制一个三角形和正方形.尽管功能简单,可是我捣腾了好几个晚上,大量网上文章上的代码都有点问题,不是绘制不出来就是挂了. 第一个文件:MainActivity.java package com.example.learnopengl1; import android.opengl.GLSurface

canvas基础绘制-绚丽倒计时

效果图: html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>ball</title> <script src="digit_1.js"></script> <script src="countdown.js"></