绘制路径

3:绘制路径

###canvas绘制路径

图形的基本元素是路径。路径是通过不同颜色和宽度的线段或曲线相连形成的不同形状的点的集合。

###步骤

1.首先,你需要创建路径起始点。

2.然后你使用画图命令去画出路径

3.之后你把路径封闭。

4.一旦路径生成,你就能通过描边或填充路径区域来渲染图形。

###绘制三角形

beginPath()

新建一条路径,生成之后,图形绘制命令被指向到路径上准备生成路径。

生成路径的第一步叫做beginPath()。本质上,路径是由很多子路径构成,这些子路径都是在一个列表中,

所有的子路径(线、弧形、等等)构成图形。而每次这个方法调用之后,列表清空重置,

然后我们就可以重新绘制新的图形。

moveTo(x, y)

将笔触移动到指定的坐标x以及y上

当canvas初始化或者beginPath()调用后,你通常会使用moveTo()函数设置起点

lineTo(x, y)

将笔触移动到指定的坐标x以及y上

绘制一条从当前位置到指定x以及y位置的直线。

closePath()

闭合路径之后图形绘制命令又重新指向到上下文中。

闭合路径closePath(),不是必需的。这个方法会通过绘制一条从当前点到开始点的直线来闭合图形。

如果图形是已经闭合了的,即当前点为开始点,该函数什么也不做

当你调用fill()函数时,所有没有闭合的形状都会自动闭合,所以你不需要调用closePath()函数。

但是调用stroke()时不会自动闭合

stroke()

通过线条来绘制图形轮廓。

不会自动调用closePath()

fill()

通过填充路径的内容区域生成实心的图形。

自动调用closePath()

###绘制矩形

rect(x, y, width, height)

绘制一个左上角坐标为(x,y),宽高为width以及height的矩形。

当该方法执行的时候,moveTo()方法自动设置坐标参数(0,0)。

也就是说,当前笔触自动重置会默认坐标

###lineCap

lineCap 是 Canvas 2D API 指定如何绘制每一条线段末端的属性。

有3个可能的值,分别是:

butt  :线段末端以方形结束。

round :线段末端以圆形结束

square:线段末端以方形结束,但是增加了一个宽度和线段相同,高度是线段厚度一半的矩形区域

默认值是 butt。

###save

save() 是 Canvas 2D API 通过将当前状态放入栈中,保存 canvas 全部状态的方法

保存到栈中的绘制状态有下面部分组成:

当前的变换矩阵。

当前的剪切区域。

当前的虚线列表.

以下属性当前的值:

strokeStyle,

fillStyle,

lineWidth,

lineCap,

lineJoin...

###restore

restore() 是 Canvas 2D API 通过在绘图状态栈中弹出顶端的状态,将 canvas 恢复到最近的保存状态的方法。

如果没有保存状态,此方法不做任何改变。

/////////////////////////////////////////////定义多个路径的基本模板///////////////////////

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

ctx.save();

//关于样式的设置

//save  restore成对出现

ctx.beginPath();

//关于路径

ctx.restore();

ctx.save();

//关于样式的设置

ctx.beginPath();

//关于路径

ctx.fill();

ctx.restore();

4:绘制签名(实例)

https://github.com/Hightinstance/practice/tree/master/%E7%AD%BE%E5%90%8D

5:绘制曲线(双曲线,sinx,圆)

1:圆     var ctx = canvas.getContext("2d");

ctx.beginPath();

ctx.moveTo(100,100);

ctx.arc(100,100,50,0,90*Math.PI/180,true); //角度是弧度

ctx.closePath();

ctx.stroke();

2:弧线

ctx.beginPath();

ctx.moveTo(50,50)

ctx.arcTo(300,0,200,200,50);

ctx.stroke();//两条切线之间的弧度 需要三个控制点

3:绘制一条二次贝塞尔曲线://根据三个点确定弧线,不需要具体的半径,需要经过起始点和终点。

ctx.beginPath();

ctx.moveTo(50,50)

ctx.quadraticCurveTo(300,0,200,200);

ctx.stroke();

//同理

绘制一条三次贝塞尔曲线:

ctx.beginPath();

ctx.moveTo(50,50)

ctx.bezierCurveTo(300,0,0,300,300,300);

ctx.stroke();

原文地址:https://www.cnblogs.com/love-life-insist/p/9136582.html

时间: 2024-10-14 05:14:16

绘制路径的相关文章

Working with MapKit 使用自定义 MKAnnotation 为地图坐标标记 绘制路径

请允许我模仿各路coding大神的习惯写法,使用“Working with MapKit”这样的装逼语句来说明本文要阐述的内容.没错,本文就是要将我之前学习使用MapKit Framework的过程.心得做一个总结.利用一个简单的栗子demo,来展现如何使用MapKit进行:1,标记若干个坐标,自定义MKAnnotation,显示附加信息:2,画出坐标点之间的线路图. 先来看一下效果: demo我已经放在了这里:https://github.com/pigpigdaddy/MapDemo 使用M

iOS 使用贝塞尔曲线绘制路径

使用贝塞尔曲线绘制路径 大多数时候,我们在开发中使用的控件的边框是矩形,或者做一点圆角,是使得矩形的角看起来更加的圆滑. 但是如果我们想要一个不规则的图形怎么办?有人说,叫UI妹子做,不仅省事,还可以趁机接近她们(_:D).这又时候确实可以.但是如果是一个时刻变动的不规则图形,这样如果做成动图或者剪出很多张图,再叫UI妹子做的话,似乎也能解决, 但是实际效果吧,呵呵. 更重要的是从此以后UI妹子不仅不愿搭理你,连以后接触的机会都不会再给你了.好吧,iOS中我们其实不需要担心这个问题.使用UIBe

(四)canvas绘制路径

save() 样式不受污染的起始范围 shadowOffsetX 阴影x轴的距离 shadowOffsetY 阴影y轴的距离 shadowBlur 模糊度 shadowColor 阴影颜色 restore() 保护样式不受污染的结束范围 clearRect() 可以理解为橡皮擦 参数四个:x轴,y轴,宽度,高度 清除整个画布:0,0,oC.width,oC.height <!doctype html> <html lang="en"> <head>

IOS图像处理(3)绘制路径

通过路径我们可以实现更加复杂的图形的绘制,比如多边形,弧,圆角矩形等等 - (void)drawRect:(CGRect)rect { //获取图像上下文对象 CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetRGBStrokeColor(context, 250/255.0, 250/255.0, 250/255.0, 1); CGContextSetFillColorWithColor(context, [UI

Cavas的beginPath对绘制路径的影响

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

Canvas绘制路径

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

(一)在 Blend 中绘制形状和路径

原文:(一)在 Blend 中绘制形状和路径 https://docs.microsoft.com/zh-cn/previous-versions/jj170881(v=vs.120) 在 Blend 中绘制形状和路径 2015/07/21 在 Blend 中,形状正是你所期望的内容. 例如:矩形.圆或椭圆. 路径是更加灵活的形状版本. 你可以执行某些操作,如重新调整它们的形状,或将它们合并在一起以形成新形状. 形状和路径使用矢量图形,因此它们可很好地按高分辨率显示进行缩放. 如果想要了解有关矢

Qt 2D绘图之三:绘制文字、路径、图像、复合模式

一.绘制文字 除了绘制图形以外,还可以使用QPainter::darwText()函数来绘制文字,也可以使用QPainter::setFont()设置文字所使用的字体,使用QPainter::fontInfo()函数可以获取字体的信息,它返回QFontInfo类对象.在绘制文字时会默认使用抗锯齿. 1.1 基本绘制 下面仍然在上一节的程序中进行代码演示,更改paintEvent()的内容如下: void Widget::paintEvent(QPaintEvent *) { QPainter p

绘制图形使用路径

概念: 在绘制除了正方形或长方形以外的的其他图形,需要使用路径. 步骤: 开始创建路径 创建图形的路径 路径创建完成后,关闭路径 设定绘制样式,调用绘制方法,绘制路径 应用: 代码 <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> </head> <body > 绘制圆形:<canvas id=&qu