先放一个效果图:

代码如下

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<canvas width="600px" height="600px" id="canvas"></canvas>
<script type="text/javascript">
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d"); ctx.arc(300,300,100,0,2*Math.PI)
ctx.stroke(); ctx.beginPath();
ctx.arc(300,300,100,0.5*Math.PI,1.5*Math.PI)
ctx.fill(); ctx.beginPath();
ctx.arc(300,250,50,0.5*Math.PI,1.5*Math.PI);
ctx.fillStyle = "white";
ctx.fill(); ctx.beginPath();
ctx.arc(300,350,50,1.5*Math.PI,0.5*Math.PI);
ctx.fillStyle = "black";
ctx.fill(); ctx.beginPath();
ctx.arc(300,250,25,0,2*Math.PI);
ctx.fillStyle = "black";
ctx.fill(); ctx.beginPath();
ctx.arc(300,350,25,0,2*Math.PI);
ctx.fillStyle = "white";
ctx.fill();
</script>
</body>
</html>

具体来说,先画出一个圆

 ctx.arc(300,300,100,0,2*Math.PI)
ctx.stroke();

然后在圆的左半边填充黑色

ctx.beginPath();
ctx.arc(300,300,100,0.5*Math.PI,1.5*Math.PI)
ctx.fill();

然后在圆心纵坐标上下各二分之一半径处分别画一个圆,一个填充黑色,一个填充白色

            ctx.beginPath();
ctx.arc(300,250,50,0.5*Math.PI,1.5*Math.PI);
ctx.fillStyle = "white";
ctx.fill(); ctx.beginPath();
ctx.arc(300,350,50,1.5*Math.PI,0.5*Math.PI);
ctx.fillStyle = "black";
ctx.fill();

最后在这两个圆内分别填充一个更小的圆,一个黑色,一个白色

ctx.beginPath();
ctx.arc(300,250,25,0,2*Math.PI);
ctx.fillStyle = "black";
ctx.fill(); ctx.beginPath();
ctx.arc(300,350,25,0,2*Math.PI);
ctx.fillStyle = "white";
ctx.fill();

如何在canvas中画出一个太极图的更多相关文章

  1. wpf 在不同DPI下如何在DrawingVisual中画出清晰的图形

    环境Win10 VS2017 .Net Framework4.7.1   本文仅讨论在DrawingVisual中进行的画图.   WPF单位,系统DPI,显示器DPI三者的定义及关系 WPF单位:一 ...

  2. 使用JavaScript在Canvas上画出一片星空

    随着Html5的迅猛发展,画布也变得越来越重要.下面我就写一个关于在canvas上画出一片星空的简单的代码的示例. 理论基础 初始化一个canvas,获得一个用于绘制图形的上下文环境context.并 ...

  3. 用HTML+CSS画出一个同心圆

    参加web前端校招的同学们经常会遇到这样的面试题:用HTML+CSS画出一个同心圆. 例如: 这道题主要考验的是基础盒模型布局能力和倒圆角属性的巧用. 1.html代码 <body> &l ...

  4. python—networkx:在一张图中画出多个子图

    通过plt.subplot能够在一张图中画出多个子图 #coding: utf-8 #!/usr/bin/env python """ Draw a graph with ...

  5. 【神经网络与深度学习】如何在Caffe中配置每一个层的结构

    如何在Caffe中配置每一个层的结构 最近刚在电脑上装好Caffe,由于神经网络中有不同的层结构,不同类型的层又有不同的参数,所有就根据Caffe官网的说明文档做了一个简单的总结. 1. Vision ...

  6. WPF Blend 脑洞大开的问题:如何用Blend得到或画出一个凹槽、曲面。

    原文:WPF Blend 脑洞大开的问题:如何用Blend得到或画出一个凹槽.曲面. 目标图: 步骤一(放置一个矩形,填充蓝色): 步骤二(复制该矩形,并调整边角,填充粉红色): 第三部:让图形部分重 ...

  7. 利用LineRenderer画出一个圆,类似于lol中的攻击范围

    http://www.unity蛮牛.com/blog-5945-1409.html 本人大四狗,学unity半年有余,写此文章纯粹记录自己的心得. 废话不多说,进入主题.... 效果如图: 首先要理 ...

  8. 第五讲:使用html5中的canvas动态画出物理学上平抛运动

    <html> <head> <title>平抛运动</title> <script src="../js/jscex.jscexRequ ...

  9. 使用CSS3画出一个叮当猫

    刚学习了这个案例,然后觉得比较好玩,就练习了一下.然后发现其实也不难,如果你经常使用PS或者Flash的话,应该就会知道画个叮当猫是很容易的事,至少我是这么觉得.但是,用CSS3画出来确实是第一次接触 ...

随机推荐

  1. SSH概述与配置文件说明

    一.什么是SSH? 简单说,SSH是一种网络协议,用于计算机之间的加密登录.在出现SSH之前,系统管理员需要登入远程服务器执行系统管理任务时,都是用telnet来实现的,telnet协议采用明文密码传 ...

  2. mongodb 的索引

                索引加快了查询速度,但是降低了写入速度.所以不要在没必要的属性上加索引.             在 mongodb 中索引可以按倒序/正序创建,便于排序.           ...

  3. ES6学习5 字符串的扩展

    1.ES6 为字符串添加了遍历器接口,使得字符串可以被for...of循环遍历. for (let codePoint of 'foo') { console.log(codePoint) } // ...

  4. 创建vue.js项目

    vue init webpack test cd test npm install 或者 cnpm install test npm run dev

  5. hdu 6363 bookshelf

    题解讲的很清楚了,直接看代码就懂了 题解:http://bestcoder.hdu.edu.cn/blog/2018-multi-university-training-contest-6-solut ...

  6. CF 420B Online Meeting 模拟题

    只是贴代码,这种模拟题一定要好好纪念下 TAT #include <cstdio> #include <cstring> #include <algorithm> ...

  7. C++11之decltype

    使用场景 在C++中常常要用到非常长的变量名.假设已经有变量和你将使用的变量是一个类型.就可以使用decltypekeyword 来申明一样的类型变量. decltype原理      返回现有变量类 ...

  8. USACO2011 Jan:公司利润

    简要题意: 奶牛开了家公司,已经连续运作了N 天.它们在第i 天获得了Ai元的利润,不过有些天是亏钱的,这种情况下利润就是一个负数.约翰想为它们写个新闻,吹嘘它们的惊人业绩.请你帮助他选出一段连续的日 ...

  9. js实现日期转换方法

    //方法1function timeStamp1String(time) { var datetime = new Date(); datetime.setTime(time); var year = ...

  10. AIX 系统补丁升级步骤

    AIX 系统补丁升级步骤   1.升级之前建议备份 rootvg (推荐) # smit mksysb   2.检查系统版本号 # oslevel -r   3.找到补丁光盘或者下载补丁,上传到服务器 ...