先看效果图吧
O(∩_∩)O哈哈~
代码在这里
<!dOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<title>绘制象棋</title>
<style>
body {
background-color: #C5C5C5;
}
canvas {
position: fixed;
background-color: #FFFFFF;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
</style>
</head>
<body>
<canvas id="canvas" width="580" height="630"></canvas>
<script>
let canvas = document.getElementById('canvas')
let cxt = canvas.getContext('2d')
drawBorder()
drawBorder2()
drawBorder3()
drawBorder4()
drawBorder5()
drawFont()
function drawFont() {
cxt.font = '40px Verdana'
cxt.fillText('楚河', 70, 330)
cxt.translate(510, 300) //重新映射画布上的(x,y)位置
cxt.rotate(180 * Math.PI / 180) // 旋转当前绘图:旋转 180 度,可规定下面的公式:180*Math.PI/180
cxt.fillText('漢界', 0, 0)
}
// 外边框大
function drawBorder() {
cxt.beginPath()
// 方法1
// 上边线
// cxt.moveTo(10,10)
// cxt.lineTo(570,10)
// // 下边线
// cxt.moveTo(10,620)
// cxt.lineTo(570,620)
// // 左边线
// cxt.moveTo(10,8)
// cxt.lineTo(10,622)
// // 右边线
// cxt.moveTo(570,8)
// cxt.lineTo(570,622)
// 方法2
cxt.moveTo(10, 10)
cxt.lineTo(570, 10)
cxt.lineTo(570, 620)
cxt.lineTo(10, 622)
cxt.lineTo(10, 8)
cxt.lineWidth = 4;
cxt.stroke()
cxt.closePath()
}
// 边框2
function drawBorder2() {
cxt.beginPath()
for (let i = 0; i <= 10; i++) {
// 棋盘横向边线
cxt.moveTo(15, 66.5 * i + 15)
cxt.lineTo(564, 66.5 * i + 15)
}
// 左边线
cxt.moveTo(16, 16)
cxt.lineTo(16, 614)
// 右边线
cxt.moveTo(564, 14)
cxt.lineTo(564, 614)
cxt.lineWidth = 2
cxt.stroke()
cxt.closePath()
}
// 绘制上下的X
function drawBorder3() {
cxt.beginPath()
for (let s = 1; s <= 7; s++) {
// 棋盘上半边纵向线
cxt.moveTo(70 * s + 16, 16)
cxt.lineTo(70 * s + 16, 280)
// 棋盘下半边纵向线
cxt.moveTo(70 * s + 16, 348)
cxt.lineTo(70 * s + 16, 614)
}
// 上半部分棋盘斜线
cxt.moveTo(225, 150)
cxt.lineTo(365, 16)
cxt.moveTo(368, 150)
cxt.lineTo(226, 16)
// 下半部分棋盘斜线
cxt.moveTo(366, 612)
cxt.lineTo(226, 481)
cxt.moveTo(228, 612)
cxt.lineTo(366, 481)
cxt.lineWidth = 2
cxt.stroke()
cxt.closePath()
}
// 上半部分
function drawBorder4() {
cxt.beginPath()
// line 1-1
cxt.moveTo(72, 144)
cxt.lineTo(82, 144)
cxt.lineTo(82, 134)
// line 1-2
cxt.moveTo(100, 144)
cxt.lineTo(90, 144)
cxt.lineTo(90, 134)
// line 1-3
cxt.moveTo(492, 144)
cxt.lineTo(502, 144)
cxt.lineTo(502, 134)
// line 1-4
cxt.moveTo(519, 144)
cxt.lineTo(510, 144)
cxt.lineTo(510, 134)
// line 2-1
cxt.moveTo(72, 152)
cxt.lineTo(82, 152)
cxt.lineTo(82, 160)
// line 2-2
cxt.moveTo(99, 152)
cxt.lineTo(90, 152)
cxt.lineTo(90, 160)
// line 2-3
cxt.moveTo(492, 152)
cxt.lineTo(502, 152)
cxt.lineTo(502, 160)
// line 2-4
cxt.moveTo(519, 152)
cxt.lineTo(510, 152)
cxt.lineTo(510, 160)
// line 3-1
cxt.moveTo(30, 210)
cxt.lineTo(20, 210)
cxt.lineTo(20, 200)
// line 3-2
cxt.moveTo(142, 210)
cxt.lineTo(152, 210)
cxt.lineTo(152, 200)
// line 3-3
cxt.moveTo(170, 210)
cxt.lineTo(160, 210)
cxt.lineTo(160, 200)
// line 3-4
cxt.moveTo(282, 210)
cxt.lineTo(292, 210)
cxt.lineTo(292, 200)
// line 3-5
cxt.moveTo(310, 210)
cxt.lineTo(300, 210)
cxt.lineTo(300, 200)
// line 3-6
cxt.moveTo(422, 210)
cxt.lineTo(432, 210)
cxt.lineTo(432, 200)
// line 3-7
cxt.moveTo(450, 210)
cxt.lineTo(440, 210)
cxt.lineTo(440, 200)
// line 3-8
cxt.moveTo(550, 210)
cxt.lineTo(560, 210)
cxt.lineTo(560, 200)
// line 4-1
cxt.moveTo(30, 220)
cxt.lineTo(20, 220)
cxt.lineTo(20, 230)
// line 4-2
cxt.moveTo(142, 220)
cxt.lineTo(152, 220)
cxt.lineTo(152, 230)
// line 4-3
cxt.moveTo(170, 220)
cxt.lineTo(160, 220)
cxt.lineTo(160, 230)
// line 4-4
cxt.moveTo(282, 220)
cxt.lineTo(292, 220)
cxt.lineTo(292, 230)
// line 4-5
cxt.moveTo(310, 220)
cxt.lineTo(300, 220)
cxt.lineTo(300, 230)
// line 4-6
cxt.moveTo(422, 220)
cxt.lineTo(432, 220)
cxt.lineTo(432, 230)
// line 4-7
cxt.moveTo(450, 220)
cxt.lineTo(440, 220)
cxt.lineTo(440, 230)
// line 4-8
cxt.moveTo(550, 220)
cxt.lineTo(560, 220)
cxt.lineTo(560, 230)
cxt.lineWidth = 2
cxt.stroke()
cxt.closePath()
}
function drawBorder5() {
cxt.beginPath()
// line 5-1
cxt.moveTo(30, 410)
cxt.lineTo(20, 410)
cxt.lineTo(20, 400)
// line 5-2
cxt.moveTo(142, 410)
cxt.lineTo(152, 410)
cxt.lineTo(152, 400)
// line 5-3
cxt.moveTo(170, 410)
cxt.lineTo(160, 410)
cxt.lineTo(160, 400)
// line 5-4
cxt.moveTo(282, 410)
cxt.lineTo(292, 410)
cxt.lineTo(292, 400)
// line 5-5
cxt.moveTo(310, 410)
cxt.lineTo(300, 410)
cxt.lineTo(300, 400)
// line 5-6
cxt.moveTo(422, 410)
cxt.lineTo(432, 410)
cxt.lineTo(432, 400)
// line 5-7
cxt.moveTo(450, 410)
cxt.lineTo(440, 410)
cxt.lineTo(440, 400)
// line 5-8
cxt.moveTo(550, 410)
cxt.lineTo(560, 410)
cxt.lineTo(560, 400)
// line 6-1
cxt.moveTo(30, 418)
cxt.lineTo(20, 418)
cxt.lineTo(20, 428)
// line 6-2
cxt.moveTo(142, 418)
cxt.lineTo(152, 418)
cxt.lineTo(152, 428)
// line 6-3
cxt.moveTo(170, 418)
cxt.lineTo(160, 418)
cxt.lineTo(160, 428)
// line 6-4
cxt.moveTo(282, 418)
cxt.lineTo(292, 418)
cxt.lineTo(292, 428)
// line 6-5
cxt.moveTo(310, 418)
cxt.lineTo(300, 418)
cxt.lineTo(300, 428)
// line 6-6
cxt.moveTo(422, 418)
cxt.lineTo(432, 418)
cxt.lineTo(432, 428)
// line 6-7
cxt.moveTo(450, 418)
cxt.lineTo(440, 418)
cxt.lineTo(440, 428)
// line 6-8
cxt.moveTo(550, 418)
cxt.lineTo(560, 418)
cxt.lineTo(560, 428)
// line 7-1
cxt.moveTo(72, 476)
cxt.lineTo(82, 476)
cxt.lineTo(82, 466)
//line 7-2
cxt.moveTo(100, 476)
cxt.lineTo(90, 476)
cxt.lineTo(90, 466)
//line 7-4
cxt.moveTo(520, 476)
cxt.lineTo(510, 476)
cxt.lineTo(510, 466)
// line 7-4
cxt.moveTo(492, 476)
cxt.lineTo(502, 476)
cxt.lineTo(502, 466)
//line 8-1
cxt.moveTo(100, 484)
cxt.lineTo(90, 484)
cxt.lineTo(90, 494)
// line 8-2
cxt.moveTo(72, 484)
cxt.lineTo(82, 484)
cxt.lineTo(82, 494)
// line 8-3
cxt.moveTo(492, 484)
cxt.lineTo(502, 484)
cxt.lineTo(502, 494)
// line8-4
cxt.moveTo(520, 484)
cxt.lineTo(510, 484)
cxt.lineTo(510, 494)
cxt.lineWidth = 2
cxt.stroke()
cxt.closePath()
}
</script>
</body>
</html>