日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

canvas笔记-使用arc与lineTo画圆角矩形及绘制2048棋盘

發(fā)布時間:2025/3/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 canvas笔记-使用arc与lineTo画圆角矩形及绘制2048棋盘 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

首先是使用arc圓所對應(yīng)的參數(shù)為(默認為順時針):

這里話矩形的話,對應(yīng)的圓心頂點坐標為:

程序運行截圖如下:

源碼如下:

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body><canvas id="canvas" style="border: 1px solid #aaa; display: block; margin: 50px auto;">當前瀏覽器不支持canvas </canvas><script>window.onload = function(){let canvas = document.getElementById("canvas");canvas.width = 800;canvas.height = 800;let context = canvas.getContext("2d");drawRoundRect(context, 100, 100, 600, 500, 50);}function drawRoundRect(cxt, x, y, width, height, radius){cxt.save();cxt.translate(x, y);pathRoundRect(cxt, width, height, radius);cxt.strokeStyle = "black";cxt.stroke();cxt.restore();}function pathRoundRect(cxt, width, height, radius){cxt.beginPath();cxt.arc(width - radius, height - radius, radius, 0, Math.PI / 2);cxt.lineTo(radius, height);cxt.arc(radius, height - radius, radius, Math.PI / 2, Math.PI);cxt.lineTo(0, radius);cxt.arc(radius, radius, radius, Math.PI, Math.PI * 3 / 2);cxt.lineTo(width - radius, 0);cxt.arc(width - radius, radius, radius, Math.PI * 3 / 2, Math.PI * 2);cxt.closePath();}</script></body> </html>

這里先使用translate把坐標原點移動到指定的位置。

cxt.arc(width - radius, height - radius, radius, 0, Math.PI / 2);

畫最右下角的弧。

cxt.lineTo(radius, height);

然后從最右下角的弧畫到最左下角。

cxt.arc(radius, height - radius, radius, Math.PI / 2, Math.PI);

畫左下角的圓弧。

cxt.lineTo(0, radius);

然后從最右下角的弧畫到最左下角。

cxt.arc(radius, height - radius, radius, Math.PI / 2, Math.PI);

畫左下角的圓弧。

cxt.lineTo(0, radius);

從最左下角的圓弧畫到最左上角。

cxt.arc(radius, radius, radius, Math.PI, Math.PI * 3 / 2);

畫最左上角的圓弧。

cxt.lineTo(width - radius, 0);

從最左上角圓弧畫到最右端。

cxt.arc(width - radius, radius, radius, Math.PI * 3 / 2, Math.PI * 2);

畫右上角圓弧。

cxt.closePath();

封口,也就是畫最右邊的那條邊。

?

?

下面是畫一個2048的棋盤

程序運行截圖如下;

源碼如下:

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body><canvas id="canvas" style="border: 1px solid #aaa; display: block; margin: 50px auto;">當前瀏覽器不支持canvas </canvas><script>window.onload = function(){let canvas = document.getElementById("canvas");canvas.width = 800;canvas.height = 800;let context = canvas.getContext("2d");fillRoundRect(context, 150, 150, 500, 500, 10, "#bbada0");for(let i = 0; i < 4; i++){for(let j = 0; j < 4; j++){fillRoundRect(context, 170 + i * 120, 170 + j * 120, 100, 100, 6, "#ccc0b3");}}}function fillRoundRect(cxt, x, y, width, height, radius, /*optional*/ fillColor){if(2 * radius > width || 2 * radius > height){return;}cxt.save();cxt.translate(x, y);pathRoundRect(cxt, width, height, radius);cxt.fillStyle = fillColor || "black";cxt.fill();cxt.restore();}function strokeRoundRect(cxt, x, y, width, height, radius, /*optional*/lineWidth, /*optional*/strokeColor){if(2 * radius > width || 2 * radius > height){return;}cxt.save();cxt.translate(x, y);pathRoundRect(cxt, width, height, radius);cxt.lineWidth = lineWidth || 1;cxt.stroke();cxt.restore();}function pathRoundRect(cxt, width, height, radius){cxt.beginPath();cxt.arc(width - radius, height - radius, radius, 0, Math.PI / 2);cxt.lineTo(radius, height);cxt.arc(radius, height - radius, radius, Math.PI / 2, Math.PI);cxt.lineTo(0, radius);cxt.arc(radius, radius, radius, Math.PI, Math.PI * 3 / 2);cxt.lineTo(width - radius, 0);cxt.arc(width - radius, radius, radius, Math.PI * 3 / 2, Math.PI * 2);cxt.closePath();}</script></body> </html>

這里就是先畫了個大矩形,然后再大矩形下面畫下矩形。

?

總結(jié)

以上是生活随笔為你收集整理的canvas笔记-使用arc与lineTo画圆角矩形及绘制2048棋盘的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 三级影片在线播放 | 日韩精品高清在线 | 国产男女视频在线观看 | 久久夜色精品国产欧美乱 | 欧美精品一二三 | 欧美亚洲网站 | 熟女高潮一区二区三区视频 | 日韩在线免费观看视频 | 国产一卡二卡三卡 | 91九色蝌蚪在线 | 国产乱色精品成人免费视频 | 97高清国语自产拍 | 杨幂一区二区国产精品 | 天堂一区二区三区 | 亚洲视频导航 | 天天视频黄 | 狼人精品一区二区三区在线 | 91在线观看免费高清 | 6080一级片 | 一级色视频 | 亚洲欧美日韩国产一区 | 免费在线黄色网址 | 国产精品成人Av | 2020av视频| 中文字幕免费高清在线观看 | 春意影院福利社 | 五月天婷婷激情网 | 青青草原综合久久大伊人精品 | 黄av资源| 色葡萄影院| 日日涩| 致命弯道8在线观看免费高清完整 | 欧美一区二区三区色 | 一级黄色片免费观看 | 99国产精品白浆在线观看免费 | 欧美成人看片黄a免费看 | 亚洲美免无码中文字幕在线 | 国产色网 | 国产另类专区 | 91片看| 国产中文字幕第一页 | 国产麻豆成人传媒免费观看 | 天天操精品 | 日本三级中文字幕 | 森泽佳奈av | 黄色激情视频网站 | 瑟瑟视频网站 | 欧美在线视频你懂的 | 乳孔很大能进去的av番号 | 91美女免费看 | 神马福利视频 | 无码人妻丰满熟妇啪啪欧美 | 在线观看亚洲免费视频 | 国产精品一区二区久久久 | www,jizz,com| 欧美成人不卡视频 | 91视频分类 | 日韩经典一区二区 | 精产国品一二三区 | 免费一区视频 | 欧美综合专区 | av色在线观看 | 阿v天堂2014 这里有精品 | 午夜爽爽爽视频 | 69超碰 | 香蕉大久久 | 97免费公开视频 | 日本大尺度电影免费观看全集中文版 | 亚洲精品国产精品国自产观看 | 伊人网站在线观看 | 自拍偷拍 国产 | 欧美精品久久久久久久 | 影音先锋在线看 | 国产视频污在线观看 | 国产午夜精品理论片在线 | 欧美成人一区在线观看 | 国产中文一区二区三区 | 欧美 日韩 国产 激情 | 三女警花合力承欢猎艳都市h | 国产精品传媒在线观看 | 国产精品爱啪在线线免费观看 | 97伊人超碰 | 一级片黄色| 强开小受嫩苞第一次免费视频 | 日本中文在线播放 | 一区=区三区乱码 | 欧美日韩一区二区三区四区五区六区 | 国产欧美日韩精品在线观看 | 日韩精品一区二区免费视频 | 超碰公开免费 | 性色在线观看 | 黄色三级a| 男女国产视频 | 91视频在线免费 | 免费观看全黄做爰的视频 | 国产精品后入内射日本在线观看 | 疯狂做受xxxx高潮人妖 | 中国黄色一级毛片 | 麻豆av免费在线 |