这一篇用canvas画个圆角矩形,什么是圆角矩形呢,先上个效果图:
再来个绘制的分析图(注:鼠标所在的位置为(0,0),r为边角圆形的半径,width为整个矩形的宽度,height为高度,以下的各个坐标为圆形的圆心坐标):
实现代码:
window.onload=function(){ var myCanvas = document.getElementById("myCanvas");//获取canvas对象 if(myCanvas.getContext("2d")){//判断浏览器是否支持canvas标签 //设置canvas的宽度和高度 myCanvas.width=800; myCanvas.height=600; var context = myCanvas.getContext("2d");//获取画布context的上下文环境 //绘制一个圆角矩形 strokeRoundRect(context,150,50,500,500,50); //绘制并填充一个圆角矩形 //fillRoundRect(context,150,50,500,500,50); }else{ alert("您的浏览器不支持canvas,请换个浏览器试试"); } }; /**该方法用来绘制一个有填充色的圆角矩形 *@param cxt:canvas的上下文环境 *@param x:左上角x轴坐标 *@param y:左上角y轴坐标 *@param width:矩形的宽度 *@param height:矩形的高度 *@param radius:圆的半径 *@param fillColor:填充颜色 **/ function fillRoundRect(cxt,x,y,width,height,radius,/*optional*/fillColor){ //圆的直径必然要小于矩形的宽高 if(2*radius>width || 2*radius>height){return false;} cxt.save(); cxt.translate(x,y); //绘制圆角矩形的各个边 drawRoundRectPath(cxt,width,height,radius); cxt.fillStyle=fillColor||"#000";//若是给定了值就用给定的值否则给予默认值 cxt.fill(); cxt.restore(); } /**该方法用来绘制圆角矩形 *@param cxt:canvas的上下文环境 *@param x:左上角x轴坐标 *@param y:左上角y轴坐标 *@param width:矩形的宽度 *@param height:矩形的高度 *@param radius:圆的半径 *@param lineWidth:线条粗细 *@param strokeColor:线条颜色 **/ function strokeRoundRect(cxt,x,y,width,height,radius,/*optional*/lineWidth,/*optional*/strokeColor){ //圆的直径必然要小于矩形的宽高 if(2*radius>width || 2*radius>height){return false;} cxt.save(); cxt.translate(x,y); //绘制圆角矩形的各个边 drawRoundRectPath(cxt,width,height,radius); cxt.lineWidth = lineWidth||2;//若是给定了值就用给定的值否则给予默认值2 cxt.strokeStyle=strokeColor||"#000"; cxt.stroke(); cxt.restore(); } function drawRoundRectPath(cxt,width,height,radius){ cxt.beginPath(0); //从右下角顺时针绘制,弧度从0到1/2PI cxt.arc(width-radius,height-radius,radius,0,Math.PI/2); //矩形下边线 cxt.lineTo(radius,height); //左下角圆弧,弧度从1/2PI到PI cxt.arc(radius,height-radius,radius,Math.PI/2,Math.PI); //矩形左边线 cxt.lineTo(0,radius); //左上角圆弧,弧度从PI到3/2PI 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.lineTo(width,height-radius); cxt.closePath(); }
根据这个圆角矩形再来绘制一个2048小游戏的棋盘,效果图如下:
在window.onload方法中添加如下代码:
//绘制一个2048的棋盘格 fillRoundRect(context,150,50,500,500,10,"#bbaba0"); //绘制16个小的棋盘 for(var i=0;i<4;i++){ for(var j=0;j<4;j++){ //170=150+20:150是棋盘左上角的x坐标,20为棋盘边线到四周各个色块的间距,也是棋盘中16个色块之间的间距 //120=100+20:100是小色块的宽度,20为间距 fillRoundRect(context,170+i*120,70+j*120,100,100,6,"#ccc0b3"); } }
最后,感谢老师的分享!
相关推荐
以下是一个简单的示例,展示如何创建一个自定义的ImageView,将加载的矩形图片转化为圆角矩形: ```java public class RoundCornerImageView extends ImageView { private float cornerRadius; public ...
说明:正圆角矩形的绘画方法 核心技术:Delphi6 Canvas Google搜索:Delphi6 Canvas RoundRect,Round Corner,Canvas.Ellipse(),Canvas.Rectangle(),ROUND()
圆角矩形与一般矩形的区别在于,前者的四个角都是圆弧,所以只需要将一般矩形的四个角切掉,换成圆弧即可,如下图就是一个一般矩形被切掉了四个角的样子: 很明显,切掉了四个角的矩形,剩下其实就是四条 line ,...
Canvas 中文名称叫“画布”,它是游戏中所有UI组件的“容器”。一个场景中,可以允许多个Canvas对象的存在,还允许Canvas之间可以进行“嵌套”使用。需要注意的是,场景中的任何一个UI对象,都肯定是某个Canvas对象...
10. **圆角矩形(Rounded Rectangle)**:`canvas.drawRoundRect()`方法允许你绘制具有圆角的矩形,需要提供矩形的边界和圆角半径。 在实际开发中,通常会创建一个自定义的View类,重写`onDraw()`方法,在其中使用...
首先,创建一个`RectF`对象来定义进度条的边界,然后通过`canvas.drawRoundRect()`方法绘制圆角矩形。圆角可以通过设置`RectF`的左上角和右下角的圆角半径来控制。 3. **进度条颜色**: 我们可以通过设置`paint....
7. 绘制:使用Canvas对象的drawBitmap()方法,传入调整后的Bitmap、Paint和目标位置,绘制出圆角矩形图片。 对于更复杂的圆形图片,我们可以省略设置RectF的步骤,直接将Bitmap的宽度和高度设置为相同,这样...
标题中的“带箭头的圆角矩形菜单”是指一种UI设计元素,它结合了箭头指示方向和圆角矩形的美观性,通常用于应用或网站的导航菜单。这样的菜单能够提供清晰的视觉引导,增强用户体验。实现这种菜单通常需要自定义...
圆角矩形的绘制主要通过`Canvas`类提供的`drawRoundRect()`方法完成。该方法接收一个矩形区域和圆角半径作为参数,根据这两个参数在画布上绘制出具有指定圆角的矩形。在自定义布局中,我们需要重写`onDraw()`方法,...
Android开发使用自定义View将圆角矩形绘制在Canvas上的方法 Android开发中,使用自定义View将圆角矩形绘制在Canvas上是一种常见的需求。本文将详细介绍使用自定义View将圆角矩形绘制在Canvas上的方法,并结合实例...
2.20_arc,圆弧和圆角矩形|canvas曲线的绘制(圆弧和贝塞尔曲线)|Canvas图形、动画、游戏开发从入门到精通全系列
通过学习和熟练掌握这些API,开发者可以打造出极具创意的QML应用程序。 在`draw-canvas`这个文件夹中,可能包含了示例代码或者资源文件,帮助开发者更深入地了解如何在QML中使用Canvas进行图形绘制。通过阅读和实践...
在Android开发中,自定义View...总结来说,"圆形变圆角矩形的微交互"是一个展示自定义View和动态动画的好例子,通过学习和实践,开发者可以提升自己的Android UI设计能力,为应用程序创造更丰富的视觉效果和交互体验。
对于圆角矩形ImageView,我们可以创建一个新的类继承自ImageView,并在onDraw()方法中使用Canvas的drawRoundRect()方法。这个方法接受六个参数:矩形的左上角坐标、宽度、高度以及四个圆角的半径。通过设置合适的...
在draw方法中,我们使用Canvas类来绘制圆角矩形。Canvas类提供了多种绘制方法,包括drawRect、drawCircle、drawText等。在本例中,我们使用drawRoundRect方法来绘制圆角矩形。 drawRoundRect方法需要四个参数:left...
如果想要绘制圆角矩形,我们需要使用`beginPath()`, `moveTo()`, `lineTo()`, `arcTo()`等方法配合使用。 首先,我们需要创建一个canvas元素并获取其2D渲染上下文: ```html <canvas id="myCanvas" width="400" ...
除了使用插件,还可以利用 Canvas API 或 SVG 来实现圆角矩形效果。Canvas 提供了绘制图形的方法,包括 `arcTo()` 函数来创建曲线路径,而 SVG 是一种矢量图形标准,可以直接定义带有圆角的矩形元素。 jQuery 动画...
Canvas提供了一个画布,通过JavaScript可以在这个画布上绘制任意形状,包括圆角矩形。对于不支持CSS3圆角的浏览器,Canvas成为了一种强大的替代方案。 在使用该插件时,首先需要引入必要的依赖文件。在提供的文件...