• html5-----2


    我们这期接上一期的html5,虽然有太多的不足;

    在上一期中我们说到Canvas绘制图形,其中我们说到拿画笔,然后绘制了一个实心的方框,一个边框的空心的方框,一个有边框有内容的矩形,以及绘制直线,最后我们绘制了一棵松树,现在我们接着上次的说;

    在学习html5中是不可避免的会遇到绘制圆形的;

    现在我们来看下绘制圆形的代码:

        arc(cx,cy,radius,start_angle,end_angle,direction);

          cx  水平坐标

          cy  垂直坐标

          radius  圆心(半径)

          start-angel  圆周起始位置  

          end_angle  弧长 Math.PI是半圆  Math.PI*2是整个圆  0.5为四分之一

          direction 顺、逆时针  false为逆时针,true为顺时针(决定了圆弧的方向)

    现在我们看了这个代码一定还是有很多不懂吧,现有我们来做一个例子:

    body里的代码:

    <canvas id="mycanvas" width="1000" height="600" style="border: 1px solid blue;"></canvas>

    script里的代码:

    var mycanvas =document.getElementById("mycanvas");----这里就是拿到画面
    var ctx =mycanvas.getContext("2d");----这里就是拿到画笔

    //等会以在的代码都会在上面这些代码的基础上

    现在我们来画一个圆:

    ctx.beginPath();--------开启路径的绘制,重置path为初始状态;
    ctx.strokeStyle="green";-----这里是对圆的填充颜色
    ctx.fillStyle="green";-----这里是对圆的线条颜色
    ctx.arc(100,100,80,0*360*Math.PI/180,360*Math.PI/180,false);
    ctx.stroke();
    ctx.fill();

    最后的图案如图:

    但如果把绘制圆这句必变两个数,如下:

    ctx.arc(100,100,80,0*180*Math.PI/180,180*Math.PI/180,false);

    最后的图案如图:

    但如果你把false换成true,结果又如下:

    圆基本上就是这样了,如果你想要实心或者空心的,就去掉边框和实心填充就行了。

    下面我们在说一个绘制圆角直线:

    在上一次中我们不是说了一个绘制直线的方法吗,我们现在只要在中间加这一句话就行了:

    lineCap='round';

    现在我们看整体代码如下:

    ctx.beginPath();
    ctx.lineCap='round';
    ctx.strokeStyle="blue";
    ctx.lineWidth=10;--------这句代码是设置线条的宽度
    ctx.moveTo(100,100);
    ctx.lineTo(100,200);

    closePath()---------绘制路径path结束,它会绘制一个闭合的区间,添加一条起始位置到当前坐标的闭合曲线;
    ctx.stroke();

    结果如下:

    现在我样来说下平移、绽放和旋转等:

    translate(x,y)-------平移变换,原点移动到坐标(x,y);

    rotate(a)------旋转变换,旋转a度角;

    scale(x,y)-----伸缩变换;

    save(),restore()----提供一个堆栈,保存和恢复绘图状态,save将当前绘图状态压入堆栈,restore出栈,恢复绘图状态;

    fillText(text,x,y)-----绘制文字;

    rect()------矩形路径;

    注意:在这里,平移和旋转的都是画布,就是说,图形本身是没有变的,只是变了画布;

    ctx.strokeStyle="red";
    ctx.lineWidth=10;
    ctx.rect(100,100,100,200);//矩形路径
    ctx.translate(100,100);//平移
    ctx.scale(2,2);//缩放
    ctx.rotate(30*Math.PI/180);//选转
    ctx.moveTo(10,10);
    ctx.lineTo(10,150);

    ctx.stroke();

    最后结果如下:

    本次就说到里了,如果感兴趣,你现在也可以自己绘制一些简单的图形了。

  • 相关阅读:
    Spring_7_AOP之Advice应用
    JAVA豆知识
    SPRING事务_2
    JSP_5_JavaBean
    Spring事务_1
    java基本类型和包装类型
    SVN使用教程总结
    通过反射来创建对象?getConstructor()和getDeclaredConstructor()区别?
    Java泛型中extends和super的区别?
    数字签名、数字证书、对称加密算法、非对称加密算法、单向加密(散列算法)
  • 原文地址:https://www.cnblogs.com/chencyl/p/3933737.html
Copyright © 2020-2023  润新知