返回顶部
首页 > 资讯 > 精选 >如何用JavaScript Canvas绘制六边形网格
  • 555
分享到

如何用JavaScript Canvas绘制六边形网格

2023-06-26 06:06:50 555人浏览 泡泡鱼
摘要

这篇“如何用javascript canvas绘制六边形网格”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何用J

这篇“如何用javascript canvas绘制六边形网格”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何用JavaScript Canvas绘制六边形网格”文章吧。

使用Canvas绘制六边形网格。

主要思路是先画给定中心点的六边形,然后二重循环遍历所有中心点,画所有的六边形。

<!DOCTYPE html><html><body><canvas id="myCanvas" width="300" height="150">    <p>你的浏览器不支持Canvas</p></canvas><br><p id='p1'></p><script type="text/javascript">"use strict";var canvas=document.getElementById('myCanvas');if (canvas.getContext) {    var k=3;    var d=30;    var w=Math.sqrt(3)*d;    var h=3/2*d;    canvas.width=2*k*w;    canvas.height=2*k*h+h/2;    var o=[canvas.width/2,canvas.height/2];    document.getElementById('p1').innerHTML='画布宽'+canvas.width+',高'+canvas.height;    var ctx=canvas.getContext('2d');    ctx.fillStyle='AntiqueWhite';    ctx.fillRect(0,0,canvas.width,canvas.height);    ctx.strokeStyle='blue';    ctx.beginPath();    var vs=[[0,d],[-w/2,d/2],[-w/2,-d/2],            [0,-d],[w/2,-d/2],[w/2,d/2]];    function one(xo,yo){        ctx.moveTo(xo+vs[5][0],yo+vs[5][1]);        for(var i=0;i<vs.length;i++){            ctx.lineTo(xo+vs[i][0],yo+vs[i][1]);        }    }    for(var i=-k+1;i<k;i++){        for(var j=0;j<2*k-1-Math.abs(i);j++){            one(o[0]+(-k+1+Math.abs(i)/2+j)*w,o[1]+h*i);        }    }    ctx.stroke();}else{    console.log('你的浏览器不支持Canvas');}</script></body></html>

效果如下:

如何用JavaScript Canvas绘制六边形网格

更新:增加了一些选项,边长和颜色可以设置。网页的图标也用六边形画出。

<!DOCTYPE HTML><html><head><title>六边形网格</title><link id="link" rel="shortcut icon" type="image/x-icon"><style>#bc1,#bc2{width:25px;}#bj,#xt,#tc{width:20px;}</style></head><body><p>设置大六边形边长: <input id='bc1' value="3" onchange="generate()"> 小六边形<br>设置小六边形边长: <input id='bc2' value="24" onchange="generate()"> 像素(px)<br>设置背景色 <input type="color" id="bj" value="#c8ffff" onchange="generate()"/>设置线条色 <input type="color" id="xt" value="#0000ff" onchange="generate()"/>设置填充色 <input type="color" id="tc" value="#faebd7" onchange="generate()"/></p><p id='p1'></p><canvas id="myCanvas" width="300" height="150"><p>你的浏览器不支持Canvas</p></canvas><script type="text/javascript">"use strict";document.getElementById('bc1').value=2;generate();link.href=myCanvas.toDataURL({fORMat:'image/png', quality:1});document.getElementById('bc1').value=3;generate();function generate(){    var bc1=document.getElementById('bc1').value;    var bc2=document.getElementById('bc2').value;    var k=Number(bc1);    var d=Number(bc2);    var bj=document.getElementById('bj').value;    var xt=document.getElementById('xt').value;    var tc=document.getElementById('tc').value;    var canvas=document.getElementById('myCanvas');    if(bc1>200){        var c=confirm('六边形个数过多时网页会卡,是否继续?');        if(!c){            return;        }    }    if(canvas.getContext) {        var w=Math.sqrt(3)*d;        var h=3/2*d;        var count=3*k*k-3*k+1;        canvas.width=2*k*w;        canvas.height=2*k*h+h/2;        var o=[canvas.width/2,canvas.height/2];        document.getElementById('p1').innerHTML='画布宽'+canvas.width+'px,高'+canvas.height+'px,含有'+count+'个小六边形';        var ctx=canvas.getContext('2d');        ctx.fillStyle=bj;        ctx.fillRect(0,0,canvas.width,canvas.height);        ctx.beginPath();        var vs=[[0,d],[-w/2,d/2],[-w/2,-d/2],[0,-d],[w/2,-d/2],[w/2,d/2]];        function one(xo,yo){            ctx.beginPath();            ctx.moveTo(xo+vs[5][0],yo+vs[5][1]);            for(var i=0;i<vs.length;i++){                ctx.lineTo(xo+vs[i][0],yo+vs[i][1]);            }            ctx.strokeStyle=xt;            ctx.lineWidth=2;            ctx.stroke();            ctx.fillStyle=tc;            ctx.fill();        }        for(var i=-k+1;i<k;i++){            for(var j=0;j<2*k-1-Math.abs(i);j++){                one(o[0]+(-k+1+Math.abs(i)/2+j)*w,o[1]+h*i);            }        }    }    else{        console.log('你的浏览器不支持Canvas');    }}</script></body></html>

效果如下:

如何用JavaScript Canvas绘制六边形网格

以上就是关于“如何用JavaScript Canvas绘制六边形网格”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: 如何用JavaScript Canvas绘制六边形网格

本文链接: https://lsjlt.com/news/307229.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JavaScript Canvas绘制六边形网格
    本文实例为大家分享了JavaScript Canvas绘制六边形网格的具体代码,供大家参考,具体内容如下 使用Canvas绘制六边形网格。 主要思路是先画给定中心点的六边形,然后二重...
    99+
    2024-04-02
  • 如何用JavaScript Canvas绘制六边形网格
    这篇“如何用JavaScript Canvas绘制六边形网格”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何用J...
    99+
    2023-06-26
  • CSS3如何绘制六边形
    小编给大家分享一下CSS3如何绘制六边形,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!因为很简单,所以先总结一下:使用CSS3绘制六边形主要使用伪类:before...
    99+
    2023-06-08
  • 使用Canvas如何绘制一个多边形
    使用Canvas如何绘制一个多边形?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。function drawPolygonPath(sideNum,&n...
    99+
    2023-06-09
  • 利用canvas怎么绘制一个多边形
    利用canvas怎么绘制一个多边形?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 初始化js代码  //初始化  (function()...
    99+
    2023-06-09
  • 怎么用css绘制蜂巢六边形效果
    本篇内容介绍了“怎么用css绘制蜂巢六边形效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!undefin...
    99+
    2024-04-02
  • 怎么用HTML5 Canvas绘制三角形和矩形等多边形
    本篇内容介绍了“怎么用HTML5 Canvas绘制三角形和矩形等多边形”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够...
    99+
    2024-04-02
  • Canvas如何实现一个六边形能力图
    这篇文章将为大家详细讲解有关Canvas如何实现一个六边形能力图,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、前言六边形能力图如下,由 6 个 六边形组成,每一个顶点代表其在某一方面的能力。这篇文章我...
    99+
    2023-06-09
  • 如何使用Canvas绘制图形图文
    这篇文章主要讲解了“如何使用Canvas绘制图形图文”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Canvas绘制图形图文”吧!HTML5火的正热,...
    99+
    2024-04-02
  • 如何利用HTML5 Canvas API绘制矩形
    这篇文章主要为大家展示了“如何利用HTML5 Canvas API绘制矩形”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何利用HTML5 Canvas API...
    99+
    2024-04-02
  • Android OpenCv4如何绘制多边形
    这篇文章主要介绍了Android OpenCv4如何绘制多边形,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。集成非常简单,直接按Module形式导入 sdk 即可官方地址,打...
    99+
    2023-06-15
  • HTML5 Canvas如何绘制矩形和三角形
    这篇文章主要为大家展示了“HTML5 Canvas如何绘制矩形和三角形”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“HTML5 Canvas如何绘制矩形和三角形...
    99+
    2024-04-02
  • 如何使用html5 canvas绘制实心原形
    这篇文章主要介绍如何使用html5 canvas绘制实心原形,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!使用 html5 canvas 绘制实心原形。<style> &...
    99+
    2024-04-02
  • 如何使用html5 Canvas绘制基本的图形
    这篇文章主要介绍“如何使用html5 Canvas绘制基本的图形”,在日常操作中,相信很多人在如何使用html5 Canvas绘制基本的图形问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2024-04-02
  • HTML5在canvas中如何绘制复杂形状
    这篇文章给大家分享的是有关HTML5在canvas中如何绘制复杂形状的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 一、绘制复杂形状或路径 在简单的矩...
    99+
    2024-04-02
  • 如何使用Canvas中的手绘风格图形库Rough.js
    这篇文章将为大家详细讲解有关如何使用Canvas中的手绘风格图形库Rough.js,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Rough.jsRough.js是一个轻量的(大约8k),基于Canvas的...
    99+
    2023-06-09
  • 使用python中的turtle库绘制常见图形(三角形、正方形、五边形、六边形、圆、同心圆、边切圆、奥运五环)
    使用python中的turtle库绘制常见图形 前言 本文主要介绍一些python的turtle库中绘制常见图形的方法,如三角形、正方形、五边形、圆。还有奥运五环、同心圆、边切圆、蟒蛇等图形的画法。 ...
    99+
    2023-09-29
    python 开发语言 pycharm
  • unity如何通过Mesh网格绘制图形球体
    小编给大家分享一下unity如何通过Mesh网格绘制图形球体,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!球体public class 球体&...
    99+
    2023-06-25
  • html5-Canvas如何在web中绘制各种图形
    这篇文章将为大家详细讲解有关html5-Canvas如何在web中绘制各种图形,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 在html5中...
    99+
    2024-04-02
  • 怎么使用CSS实现酷炫六边形网格背景图
    本文小编为大家详细介绍“怎么使用CSS实现酷炫六边形网格背景图”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用CSS实现酷炫六边形网格背景图”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。如何绘制六边形?首...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作