GVKun编程网logo

HTML5 canvas基本绘图之绘制线条(html canvas 绘图)

9

对于HTML5canvas基本绘图之绘制线条感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍htmlcanvas绘图,并为您提供关于Android编程之绘图canvas基本用法示例、canvas

对于HTML5 canvas基本绘图之绘制线条感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍html canvas 绘图,并为您提供关于Android编程之绘图canvas基本用法示例、canvas-nest.js基于html5 canvas绘制的网页背景效果、canvas基本绘制图形、canvas基础入门(二)绘制线条、三角形、七巧板的有用信息。

本文目录一览:

HTML5 canvas基本绘图之绘制线条(html canvas 绘图)

HTML5 canvas基本绘图之绘制线条(html canvas 绘图)

<canvas></canvas>是HTML5中新增的标签,用于绘制图形,这篇文章主要为大家详细介绍了HTML5 canvas基本绘图之绘制线条方法,感兴趣的小伙伴们可以参考一下

<canvas></canvas>是HTML5中新增的标签,用于绘制图形,实际上,这个标签和其他的标签一样,其特殊之处在于该标签可以获取一个CanvasRenderingContext2D对象,我们可以通过JavaScript脚本来控制该对象进行绘图。

<canvas></canvas>只是一个绘制图形的容器,除了id、class、style等属性外,还有height和width属性。在<canvas>>元素上绘图主要有三步:

1.获取<canvas>元素对应的DOM对象,这是一个Canvas对象;
2.调用Canvas对象的getContext()方法,得到一个CanvasRenderingContext2D对象;
3.调用CanvasRenderingContext2D对象进行绘图。

线条属性

除了上面用到的linewidth属性,线条还有以下几个属性:

•lineCap 属性设置或返回线条末端线帽的样式,可以取以下几个值:
“butt” 向线条的每个末端添加平直的边缘(默认);
“round” 向线条的每个末端添加圆形线帽;
“square” 向线条的每个末端添加正方形线帽。

•lineJoin 属性当两条线交汇时设置或返回所创建边角的类型,可以取以下几个值:
“miter” 创建尖角(默认);
“bevel” 创建斜角;
“round” 创建圆角。

•miterLimit 属性设置或返回最大斜接长度(默认为10)。斜接长度指的是在两条线交汇处内角和外角之间的距离。只有当 lineJoin 属性为 “miter” 时,miterLimit 才有效。

JavaScript Code复制内容到剪贴板

var canvas = document.getElementById(canvas);   
    var context = canvas.getContext(2d);   
    //测试lineCap属性 
    //设置基准线便于观察 
    context.moveto(10,10);   
    context.lineto(10,200);   
    context.moveto(200,10);   
    context.lineto(200,200);   
    context.linewidth=1;   
    context.stroke();   
    //butt 
    context.beginPath();   
    context.moveto(10,50);   
    context.lineto(200,50);   
    context.lineCap=butt;   
    context.linewidth=10;   
    context.stroke();   
    //round 
    context.beginPath();   
    context.moveto(10,100);   
    context.lineto(200,100);   
    context.lineCap=round;   
    context.linewidth=10;   
    context.stroke();   
    //square 
    context.beginPath();   
    context.moveto(10,150);   
    context.lineto(200,150);   
    context.lineCap=square;   
    context.linewidth=10;   
    context.stroke();   
    //测试linJoin属性 
    //miter 
    context.beginPath();   
    context.moveto(300,50);   
    context.lineto(450,100);   
    context.lineto(300,150);   
    context.lineJoin=miter;   
    context.linewidth=10;   
    context.stroke();   
    //round 
    context.beginPath();   
    context.moveto(400,50);   
    context.lineto(550,100);   
    context.lineto(400,150);   
    context.lineJoin=round;   
    context.linewidth=10;   
    context.stroke();   
    //square 
    context.beginPath();   
    context.moveto(500,50);   
    context.lineto(650,100);   
    context.lineto(500,150);   
    context.lineJoin=bevel;   
    context.linewidth=10;   
    context.stroke();   
    //测试miterLimit属性 
    context.beginPath();   
    context.moveto(700,50);   
    context.lineto(850,100);   
    context.lineto(700,150);   
    context.lineJoin=miter;   
    context.miterLimit=2;   
    context.linewidth=10;   
    context.strokeStyle=#2913EC;   
    context.stroke();

各属性的不同取值的效果如下:

相关推荐:

使用HTML5 Canvas为图片填充颜色和纹理

javascript html5 canvas实现可拖动省份的中国地图

Android编程之绘图canvas基本用法示例

Android编程之绘图canvas基本用法示例

本文实例讲述了Android编程之绘图canvas基本用法。分享给大家供大家参考,具体如下:

MainActivity的代码如下:

package example.com.myapplication;
import android.os.Bundle;
import android.app.Activity;
public class MainActivity extends Activity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //实例化GraphicsView
    GraphicsView gv = new GraphicsView(this);
    /* 在以前我们通过setContentView(R.layout.activity_main)显示布局文件
     * 本例中使用GraphicsView对象gv代替以前布局文件
     */
    setContentView(gv);
  }
}

另一个定义画布画笔的class类

GraphicsView

其代码如下::

package example.com.myapplication;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Color;
import android.view.View;
public class GraphicsView extends View{
  //声明画笔
  Paint paint=null;
  public GraphicsView(Context context) {
    super(context);
    /*----------------------------------------------
     * 部分书籍中把Paint paint=new Paint();放在onDraw方法中,建议
     * 尽量不要把初始化画笔放在onDraw方法中,这是因为:onDraw经常会运行
     * 到的,不要在里面new对象,越少越好,不然很浪费内存
     *--------------------------------------------*/
    //获取画笔,初始化画笔
    paint=new Paint();
  }
  @Override
  protected void onDraw(Canvas canvas){
    //设置画布背景为白色
    canvas.drawColor(Color.WHITE);
    //设置画笔为红色
    paint.setColor(Color.RED);
    //使用当前画笔绘制一个左上角坐标为80,20,右下角坐标为360,180的矩形
    canvas.drawRect(80,20,360,180,paint);
    //设置画笔为绿色
    paint.setColor(Color.GREEN);
    //使用当前画笔绘制一个圆心坐标为220,100,半径为60的圆
    canvas.drawCircle(220,100,60,paint);
  }
}

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android图形与图像处理技巧总结》、《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。

canvas-nest.js基于html5 canvas绘制的网页背景效果

canvas-nest.js基于html5 canvas绘制的网页背景效果

开源地址

https://github.com/hustcc/canvas-nest.js

下载js地址

http://cdn.bootcss.com/canvas-nest.js/1.0.1/canvas-nest.min.js

 

<body>

<!-- 下面的js必须在body里面引入    color:设置点和线的颜色    count:设置点的个数,count的数量不宜太多,太多会拖慢加载速度 -->
<script type="text/javascript" color="0,209,178" opacity=''0.9'' zIndex="-2" count="300"  src="canvas-nest.min.js"></script>

</body>

 

设置线条的粗细 canvas-nest.min.js的 lineWidth 属性即可

设置线条的颜色 canvas-nest.min.js的 strokeStyle 属性即可

 

该js只是我在github找到自己用觉得好用,并不是自己写的

canvas基本绘制图形

canvas基本绘制图形

canvas H5新增的元素,提供了强大的图形的绘制,变换,图片,视频的处理等等。需要使用JavaScript脚本操作

浏览器支持

大多数的现代浏览器都可以支持;IE8以下的浏览器不支持

画布 可支持设置宽高,默认宽高300 150

 

获取canvas元素

var mycanvas = document.getElementById("myCanvas");

获取绘制环境(相当于画笔)

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

是自带的好h5对象,拥有多种绘制路径,矩形,圆形,文本等方法

 

绘制线

开始绘制

context.beginPath();

设置起点的坐标

moveTo(x,y) 

 

设置样式(颜色,渐变或模式)

context.stroke;

设置填充颜色

context.fill;

context.fill();

设置线条宽度

context.lineWidth = 5;

设置线条结束端 lineGap

设置拐角类型   lineJoin

context.lineCap = "round";

绘制

context.stroke();

 

绘制矩形

fillRect()  绘制填充的矩形

strokeRect() 绘制无填充的矩形

 

阴影颜色 shadowColor

阴影的模糊级别 shadowBlur

阴影的水平偏移量 shadowOffsetX

阴影的垂直偏移量 shadowOffsetY

 

绘制文字

strokeText() 绘制空心文本

fillText()  绘制实心文本

 

线性渐变

createLinearGradient(x0,y0,x1,y1)

x0,y0,x1,y1起始位置的坐标和结束位置的坐标

var linear = context.createLinearGradient(100, 350, 400, 450);

addColorStop()

参数1:对应颜色的位置,[0,1]

参数2:对应的颜色(字符串形式)

linear.addColorStop(0, "red");

linear.addColorStop(0.5, "yellow");

linear.addColorStop(1, "blue");

context.fillStyle = linear;

context.fillRect(0, 350, 500, 25);

context.fillRect(0, 0, 500, 500);

 

径向渐变

context.createRadialGradient(x0,y0,r0,x1,y1,r1)

x0,y0,r0,x1,y1,r1径向渐变的起始位置和结束位置对应的坐标和渐变半径 

var grad = context.createRadialGradient(150, 150, 50, 150, 150, 150);

grad.addColorStop(0, "red");

grad.addColorStop(0.5, "yellow");

grad.addColorStop(1, "blue");

context.fillStyle = grad;

context.fillRect(0, 0, 300, 300);

 

图形变换

平移 旋转 缩放

translate() 平移 重置画布

平移操作只会影响后面图形的位置,是不会影响前面图形的

context.fillStyle = grad;

context.fillRect(300, 300, 100, 100);

context.translate(50, 50);

 

rotate()旋转 

context.rotate(Math.PI / 4);

 

scale(w,h) 设置x方向和y方向的缩放比。大于1:放大,小于1:缩小

context.scale();

 

贝塞尔曲线

二次方贝塞尔曲线

context.quadraticCurveTo(cx,cy,x1,y1);

参数:cx,cy  二次方贝塞尔曲线的控制点坐标位置

      x1,y1  结束点坐标位置

context.beginPath();

context.moveTo(50, 50);

context.quadraticCurveTo(100, 100, 150, 20);

context.stroke();

 

三次方贝塞尔曲线

bezierCurveTo(cx1,cy1,cx2,cy2,x,y)

前四个参数:代表两个控制点的坐标位置

后两个参数:代表结束点的坐标位置

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

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

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

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

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

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

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

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

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

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

 

代码

<canvas id="canvas">当前浏览器不支持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">当前浏览器不支持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">当前浏览器不支持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">
            当前浏览器不支持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>

 

今天关于HTML5 canvas基本绘图之绘制线条html canvas 绘图的讲解已经结束,谢谢您的阅读,如果想了解更多关于Android编程之绘图canvas基本用法示例、canvas-nest.js基于html5 canvas绘制的网页背景效果、canvas基本绘制图形、canvas基础入门(二)绘制线条、三角形、七巧板的相关知识,请在本站搜索。

本文标签: