canvas初探3:画方画圆

绘制矩形的方法,strokeRect()、fillRect()及clearRect()。

方法 描述
strokeRect(double x,double y,double w,double h) 使用如下属性,为指定的矩形描边:
● strokeStyle
● lineWidth
● lineJoin
● miterLimit
如果宽度(w 参数)或高度(h 参数)有一个为0的话,那么该方法将会分别绘制一条竖线或横线。如果两者都为0,那不会绘制任何东西
fillRect(double x,double y,double w,double h) 使用fillStyle属性填充指定的矩形。如果宽度或高度是0的话,它不会进行任何绘制
clearRect(double x,double y,double w,double h) 将指定矩形与当前剪辑区域相交范围内的所有像素清除。

效果图如下,左侧为未填充的矩形,右侧为填充的矩形。

代码如下所示,

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

context.lineJoin = "round";//设置线交叉处为圆弧状
context.lineWidth = 50; //

context.font = ‘24px Consolas‘;
context.fillText("点击画布任何地方将擦去图形 !",175,200);

//颜色
context.strokeStyle = "goldenrod";
context.fillStyle = "rgba(0,0,255,0.5)";

//绘制
context.strokeRect(75,100,200,200);
context.fillRect(325,100,200,200);

context.canvas.onmousedown = function(e){
    context.clearRect(0,0,canvas.width,canvas.height);
};

JavaScript代码

绘制圆形的方法,arc(),beginPath(),closePath(),fill(),rect(),stroke()。

方 法 描 述
arc() 可以绘制圆弧
beginPath() 将当前路径之中所有子路径都清除掉,以此来重置当前路径。
closePath() 显式地封闭某段开放路径。该方法用于封闭圆弧路径以及由曲线或者线段所创建的开放路径
fill() 使用fillStyle对当前路径进行填充
rect(double x,double y,double width,double height) 在坐标(x,y)处建立一个宽度为width,高度为height的矩形子路径。该子路径一定是封闭的,而且总是按逆时针方向创建的
stroke() 使用strokeStyle来描绘当前路径的轮廓线

效果图如下,

代码如下所示,

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

//一个函数,由于绘制网格
function drawGrid(context,color,stepx,stepy){
    context.strokeStyle = color;
    context.lineWidth = 0.5;

    for(var i = stepx + 0.5; i < context.canvas.width;i += stepx){
        context.beginPath();
        context.moveTo(i,0);
        context.lineTo(i,context.canvas.height);
        context.stroke();
    }

    for(var i = stepy + 0.5;i < context.canvas.height;i +=stepy){
        context.beginPath();
        context.moveTo(0,i);
        context.lineTo(context.canvas.width,i);
        context.stroke();
    }
}
//绘制网格 作为底图
drawGrid(context,"lightgray",10,10);
//绘图属性
context.font = "48pt Helvetica";
context.strokeStyle = "blue";
context.fillStyle = "orange";
context.lineWidth = "2";

//文字
context.strokeText("Stroke",60,110);
context.fillText("Fill",400,110);

context.strokeText("Stroke & Fill",650,110);
context.fillText("Stroke & Fill",650,110);

//绘制矩形
context.lineWidth = "5";
context.beginPath();
context.rect(80,150,150,100);
context.stroke();

context.beginPath();
context.rect(400,150,150,100);
context.fill();

context.beginPath();
context.rect(750,150,150,100);
context.fill();

//绘制开口弧线

context.beginPath();
context.arc(150,370,60,0,Math.PI*3/2,false);//角度为270度
context.stroke();

context.beginPath();
context.arc(475,370,60,0,Math.PI*3/2,false);
context.fill();

context.beginPath();
context.arc(820,370,60,0,Math.PI*3/2,false);
context.stroke();
context.fill();

//  封闭的弧线

context.beginPath();
context.arc(150,550,60,0,Math.PI*3/2,false);
context.closePath();
context.stroke();

context.beginPath();
context.arc(475,550,60,0,Math.PI*3/2,false);
context.closePath();
context.fill();

context.beginPath();
context.arc(820,550,60,0,Math.PI*3/2,false);
context.closePath();
context.stroke();
context.fill();

JavaScript代码

时间: 2024-10-14 22:26:23

canvas初探3:画方画圆的相关文章

ABB工业机器人(条件执行数字信号判断,画方or画圆)

一.前戏 条件:从安全点,到工具区域夹取工具(笔),到工作区域,判断数字信号 Di1 =1 ,Ture :画方,False:画圆,回到工具区域放下工具(笔),回到安全点 二. 准备工作 校准tcp工具坐标(鼻尖) 配置数字输入Di1 校准关键点(安全点,工具区域点,工作区域点) 线性 三. 伪代码 step1: TO wobj_space get wobj; step2:    TO work_space ; step3:     IF Di1=1 THEN //Draw rectangle;

OpenGL基础(一)2.画多边形之圆

1 //Five edges polygon. 2 //As less code as possible. 3 4 #include "stdafx.h" 5 #include<gl/glut.h> 6 #include<stdlib.h> 7 #include<iostream> 8 #include<math.h> 9 10 const GLdouble PI = 3.1415926; 11 static GLdouble x, y;

图形学复习4——光栅化(画线画圆扫描线反走样算法)

图形学复习 CH7 光栅化 前几章介绍了几何处理和裁剪变换,接下来的步骤就是光栅化 光栅化是将形式表示的几何图元转换为阵列表示的数据片元的过程,片元中每一个像素对应帧缓冲区中的每一个像素 7.1 线段生成算法 (1)DDA画线算法 设直线表达式为y=mx+b,输入直线两端点坐标(x0,y0)和(xend,yend),可以计算出m=yend?y0xend?x0和b=y0?m?x0 DAA是基于微分运算的线段生成算法,其主要计算式便是δy=mδx: 若|m|≤1则x方向的变化大于y方向的变化,以x方

流程图怎么画 如何画好程序流程图

流程图怎么画 如何画好程序流程图 流程图可以直观的反映文件流程,它比ppt.表格更加形象和清晰,所以流程图被广泛应用,那么流程图怎么画呢?如何才能画好一份程序的流程图呢?接下来小编就给大家介绍一种绘制流程图的方法. 1.首先,在电脑上下载一个流程图制作软件,浏览器搜索关键词"迅捷流程图制作软件",进入官网下载安装该软件. 2.运行打开软件,在弹出的对话框中选择"创建新图表".如果你有图标的话也可以点击"打开现有图表". 3.点击创建图表后,会弹出

H5实现绘制三角形并在其三个顶点画三个圆添加点击事件

1.效果如下: 代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <canvas id="canvas"></canvas> </body> <script type="text/javasc

C# 画个实心圆

Graphics dc = listView1.CreateGraphics(); Pen redpen = new Pen(Color.Red, 2); dc.DrawEllipse(redpen, 0, 100, 50, 50);像这个画的是个空心的圆,我想画个实心的该怎么弄啊?? 回答: 用Brush填充,不用Pen如System.Drawing.SolidBrush myBrush = new System.Drawing.SolidBrush(System.Drawing.Color.

CSS画基本图形——圆

#cicle {             width: 100px;             height: 100px;             background-color: #000;             -moz-border-radius: 50px;             -webkit-border-radius: 50px;             border-radius: 50px;         } 实验表明 border-radius 只要是大于 heigh

Canvas的quadraticCurveTo 和 bezierCurveTo 画曲线 方法细说

详细代码如下: <!doctype html> <html lang="en"> <head> <script src="http://modernizr.com/downloads/modernizr-latest.js"></script> <meta charset="UTF-8"> <title>quadraticCurveTo Example</t

Quartz2d (画线 矩形 圆 三角形 弧线 扇形 进度圈等)

</pre><pre code_snippet_id="1675698" snippet_file_name="blog_20160509_1_1489477" name="code" class="objc">/** Quartz2d的图形绘制API */ "[画线drawLine]" 1.获取上下文件UIGraphicsGetCurrentContext(); 2.设置起点CGC