<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
* {margin: 0;padding: 0;}
canvas {border: 2px dotted #ddd}
</style>
</head>
<body>
<canvas id=drawingCanvas1 width=500 height=300></canvas>
<canvas id=drawingCanvas2 width=500 height=300></canvas>
<canvas id=drawingCanvas3 width=500 height=300></canvas>
<canvas id=drawingCanvas4 width=500 height=300></canvas>
<canvas id=drawingCanvas5 width=500 height=300></canvas>
<canvas id=drawingCanvas6 width=500 height=300></canvas>
<script>
// 直线
var canvas = document.getElementById('drawingCanvas1')
var context = canvas.getContext('2d') // 设置
context.lineWidth = 20 // 线条宽度
context.strokeStyle = 'rgba(205, 40, 40, 0.5)' // 线条颜色
context.lineCap = 'round' // 线头形状
context.moveTo(10, 10) // 起点
context.lineTo(400, 40) // 终点
// 绘制
context.stroke() /**
* 重新开始一个新线段的绘制
* 如果没有这一步,那么每次调用stroke(),都会把画布上原有的线段再重新绘制一遍
*/
context.beginPath()
// 设置
context.lineCap = 'square'
context.moveTo(10, 10)
context.lineTo(400, 90)
// 绘制
context.stroke() // 三角形
var canvas = document.getElementById('drawingCanvas2')
var context = canvas.getContext('2d') context.moveTo(255, 50)
context.lineTo(50, 250)
context.lineTo(450, 250)
context.closePath() context.fillStyle = 'blue'
context.fill() context.lineWidth = 5
context.strokeStyle = 'red'
context.stroke()
// 曲线
var canvas = document.getElementById('drawingCanvas4')
var context = canvas.getContext('2d') var centerX = 250
var centerY = 150
var radius = 100
var startingAngle = 0 * Math.PI
var endingAngle = 0.5 * Math.PI context.arc(centerX, centerY, radius, startingAngle, endingAngle)
context.closePath()
context.stroke() context.beginPath()
var endingAngle = 2 * Math.PI
context.arc(centerX, centerY, radius, startingAngle, endingAngle)
context.stroke() // 控制点
var canvas = document.getElementById('drawingCanvas5')
var context = canvas.getContext('2d') context.moveTo(100, 100) var control1_x = 60
var control1_y = 10
var control2_x = 40
var control2_y = 90
var endPointX = 0
var endPointY = 0 context.bezierCurveTo(control1_x, control1_y, control2_x, control2_y,
endPointX, endPointY)
context.stroke() // 变换
var canvas = document.getElementById('drawingCanvas6')
var context = canvas.getContext('2d') context.translate(100, 100) var copies = 10
for (var i = 1; i < copies; i++) {
context.rotate(2 * Math.PI * 1 / (copies -1))
context.rect(0, 0, 60, 60)
}
context.stroke()
</script>
</body>
</html>

☀【canvas】直线 / 三角形 / 矩形 / 曲线 / 控制点 / 变换的更多相关文章

  1. canvas绘制自定义的曲线,以椭圆为例,通俗易懂,童叟无欺

    本篇文章,将讲述如何通过自定义的曲线函数,使用canvas的方式进行曲线的绘制. 为了通俗易懂,将以大家熟悉的椭圆曲线为例,进行椭圆的绘制.至于其他比较复杂的曲线,用户只需通过数学方式建立起曲线函数, ...

  2. Canvas中绘制贝塞尔曲线

    ① 什么是贝塞尔曲线? 在数学的数值分析领域中,贝济埃曲线(英语:Bézier curve,亦作“贝塞尔”)是计算机图形学中相当重要的参数曲线.更高维度的广泛化贝济埃曲线就称作贝济埃曲面,其中贝济埃三 ...

  3. 基于canvas二次贝塞尔曲线绘制鲜花

    canvas中二次贝塞尔曲线参数说明: cp1x:控制点1横坐标 cp1y:控制点1纵坐标 x: 结束点1横坐标 y:结束点1纵坐标 cp2x:控制点2横坐标 cp2y:控制点2纵坐标 z:结束点2横 ...

  4. 用html5的canvas画布绘制贝塞尔曲线

    查看效果:http://keleyi.com/keleyi/phtml/html5/7.htm 完整代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHT ...

  5. HTML5 Canvas自定义圆角矩形与虚线(Rounded Rectangle and Dash Line)

    HTML5 Canvas自定义圆角矩形与虚线(RoundedRectangle and Dash Line) 实现向HTML Canvas 2d context绘制对象中添加自定义的函数功能演示,如何 ...

  6. HTML5 在canvas绘制一个矩形

    笔者:本笃庆军 原文地址:http://blog.csdn.net/qingdujun/article/details/32930501 一.绘制矩形 canvas使用原点(0,0)在左上角的坐标系统 ...

  7. WPF使用Canvas绘制可变矩形

    1.问题以及解决办法 最近因为项目需要,需要实现一个位置校对的功能,大致的需求如下:有一个图片,有一些位置信息,但是位置信息可能和实际有些偏差,需要做简单调整,后面会对这张图片进行切割等,做些处理.( ...

  8. 使用canvas绘制渐变色矩形和使用按键控制人物移动

    使用canvas绘制渐变色矩形和使用按键控制人物移动 1.使用canvas绘制渐变色矩形 效果演示 相关代码: <!DOCTYPE html> <html lang="en ...

  9. for循环+canvas实现黑客帝国矩形阵

    <!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content=& ...

随机推荐

  1. iOS测试一段代码的运行时间

    王刚韧 23:19:26测试一段代码的运行时间 测试一段代码运行花了多久: NSDate* tmpStartData = [NSDate date] ;<#代码#> double delt ...

  2. swift-08-使用键值对儿统计字符在字符串中出现的次数

    // //  main.swift //  12- // //  Created by wanghy on 15/8/9. //  Copyright (c) 2015年 wanghy. All ri ...

  3. 10.15_SVG可以解决问题吗

    (1)淘宝开放平台. (2)Teiid是一个数据虚拟化系统.Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架.Apache Jackrabbit. (3)SVG:百度百科.SVG.js .Sn ...

  4. greenlet代码解读

    协程 上次已经讲解了协程的的实现方法,和我对协程的一些理解.这里指我就先以代码说明协程的运行.def test1():    print 12         (2)    gr2.switch()  ...

  5. Java基础巩固--正则表达式

    本篇文章是学习尚学堂的关于正则表达式的视频教程时,所做的笔记.供广大编程爱好者学习之用,也留给日后自己复习使用! 1.为什么要有正则表达式? 正则表达式可以方便的对数据进行匹配,可以进行更加复杂的字符 ...

  6. 操作系统和Python的发展历程

    一:操作系统的发展历史: 操作系统:什么是操作系统?我们首先想到的是电脑,,也就是所谓的Windows8,Windows7,或者XP系统和Windows10,当然也包括我们手机的安卓系统或者IPhon ...

  7. python入门 第二天笔记

    程序主文件标志if __name__=="__main__": 在程序执行python 1.py 时候 程序1.py __name__ 为 main调用其他文件是,__name__ ...

  8. python 三分钟入门

    1.Python环境配置(2.7版本): Python官网:https://www.python.org/ Pycharm官网 http://www.jetbrains.com/pycharm/dow ...

  9. c语言数组的操作

    #include<stdio.h> #include<malloc.h> #include<stdlib.h>//exit() struct Arr//定义了一个数 ...

  10. 为什么很多语言选择在JVM上实现

    非常经济地实现跨平台.你的语言编译器后端只需要输出 JVM 字节码就可以.跨平台需要极大的工作量,举个例子,只是独立开发生成本地代码,就需要花费大量精力去针对不同平台和处理器进行优化(比如 Firef ...