cocos2dx-lua 圆角矩形 圆角图片 drawNode
使用的官方类是:drawNode
函数是:drawNode:drawPolygon()
C++函数的参数说明:
//画多边形,verts为点集,count为点数,fillColor为填充颜色,borderWidth为边缘线宽,borderColor为边缘线颜色
void drawPolygon(Vec2 *verts, int count, const Color4F &fillColor, float borderWidth, const Color4F &borderColor);
lua用table作为点集
代码如下:
function drawNodeRoundRect(drawNode, rect, borderWidth, radius, color, fillColor)
-- segments表示圆角的精细度,值越大越精细
local segments =
--local segments = 4
local origin = cc.p(rect.x, rect.y)
local destination = cc.p(rect.x + rect.width, rect.y - rect.height)
local points = { } -- 算出1/4圆
local coef = math.pi / / segments
local vertices = { } for i = , segments do
local rads =(segments - i) * coef
local x = radius * math.sin(rads)
local y = radius * math.cos(rads) table.insert(vertices, cc.p(x, y))
end local tagCenter = cc.p(, )
local minX = math.min(origin.x, destination.x)
local maxX = math.max(origin.x, destination.x)
local minY = math.min(origin.y, destination.y)
local maxY = math.max(origin.y, destination.y)
local dwPolygonPtMax =(segments + ) *
local pPolygonPtArr = { } -- 左上角
tagCenter.x = minX + radius;
tagCenter.y = maxY - radius; for i = , segments do
local x = tagCenter.x - vertices[i + ].x
local y = tagCenter.y + vertices[i + ].y table.insert(pPolygonPtArr, cc.p(x, y))
end -- 右上角
tagCenter.x = maxX - radius;
tagCenter.y = maxY - radius; for i = , segments do
local x = tagCenter.x + vertices[#vertices - i].x
local y = tagCenter.y + vertices[#vertices - i].y table.insert(pPolygonPtArr, cc.p(x, y))
end -- 右下角
tagCenter.x = maxX - radius;
tagCenter.y = minY + radius; for i = , segments do
local x = tagCenter.x + vertices[i + ].x
local y = tagCenter.y - vertices[i + ].y table.insert(pPolygonPtArr, cc.p(x, y))
end -- 左下角
tagCenter.x = minX + radius;
tagCenter.y = minY + radius; for i = , segments do
local x = tagCenter.x - vertices[#vertices - i].x
local y = tagCenter.y - vertices[#vertices - i].y table.insert(pPolygonPtArr, cc.p(x, y))
end if fillColor == nil then
fillColor = cc.c4f(, , , )
end drawNode:drawPolygon(pPolygonPtArr, #pPolygonPtArr, fillColor, borderWidth, color)
end --创建DrawNode
local imagePath = "res/test.png"
head = cc.DrawNode:createWithFilename(imagePath)
head:setAnchorPoint(cc.p(0.5, 0.5))
head:setPosition(cc.p(+-, ++))
scene:addChild(head,) --配置参数
local TestRect = {}
TestRect.x =
TestRect.width =
TestRect.y=
TestRect.height = local TestBorderWidth =
local TestColor = cc.c4f(,,,)
local Testradius = head:clear()
drawNodeRoundRect(head,TestRect,TestBorderWidth,Testradius,TestColor,TestColor)
cocos2dx-lua 圆角矩形 圆角图片 drawNode的更多相关文章
- 使用imageMagick 制作圆角矩形和图片加水印
制作圆角矩形好图片水印都是图片合成的操作 composite -gravity southeast mask175.png src.jpg dest.jpg -gravity southeast ...
- cocos2d-x lua 使用http(下载图片, POST JSON)
cocos2d-x lua 使用http(下载图片, POST JSON) version: cocos2d-x 3.6 1.使用http post json与服务器交互 require(" ...
- Android开发之自定义圆角矩形图片ImageView的实现
android中的ImageView只能显示矩形的图片,这样一来不能满足我们其他的需求,比如要显示圆角矩形的图片,这个时候,我们就需要自定义ImageView了,其原理就是首先获取到图片的Bitmap ...
- Android中绘制圆角矩形图片及任意形状图片
圆角矩形图片在苹果的产品中很流行,相比于普通的矩形,很多人都喜欢圆角矩形的图片,因为它避开了直角的生硬,带来更好的用户体验,下面是几个设计的例子: 下面在Android中实现将普通的矩形图片绘制成圆角 ...
- Android开发之自定义圆角矩形图片ImageView的实现 - Jamy Cai
android中的ImageView只能显示矩形的图片,这样一来不能满足我们其他的需求,比如要显示圆角矩形的图片,这个时候,我们就需要自定义ImageView了,其原理就是首先获取到图片的Bitmap ...
- [BOT] 一种android中实现“圆角矩形”的方法
内容简介 文章介绍ImageView(方法也可以应用到其它View)圆角矩形(包括圆形)的一种实现方式,四个角可以分别指定为圆角.思路是利用"Xfermode + Path"来进行 ...
- swift UIImage加载远程图片和圆角矩形
UIImage这个对象是swift中的图像类,可以使用UIImageView加载显示到View上. 以下是UIImage的构造函数: init(named name: String!) -> U ...
- Android自定义ImageView实现图片圆形 ,椭圆和矩形圆角显示
Android中的ImageView只能显示矩形的图片,为了用户体验更多,Android实现圆角矩形,圆形或者椭圆等图形,一般通过自定义ImageView来实现,首先获取到图片的Bitmap,然后通过 ...
- 不用css样式表和背景图片实现圆角矩形,超简洁!
当网站页面的整体布局设计好后,接下来有很多细节的实现是很让人头疼的.其中之一就是圆角矩形的实现. 在网上看了很多圆角矩形的实现方法,基本有两种,一种是用纯css实现,不需要背景图片:另一种是用背景图像 ...
随机推荐
- 09-JavaScript之伪数组arguments
JavaScript之伪数组arguments arguments代表的是实参.有个讲究的地方是:arguments只在函数中使用. 1.返回函数实参的个数 使用argument.length方法返回 ...
- SPOJ 7001 Visible Lattice Points (莫比乌斯反演)
题意:求一个正方体里面,有多少个顶点可以在(0,0,0)位置直接看到,而不被其它点阻挡.也就是说有多少个(x,y,z)组合,满足gcd(x,y,z)==1或有一个0,另外的两个未知数gcd为1 定义f ...
- Linux(Ubuntu)使用日记(四)------印象笔记相关使用
在Ubuntu系统下没有印象笔记官方的客户端,但是这并不能阻拦我们使用印象笔记. 我们一般的的使用习惯: 印象笔记客户端 印象笔记剪藏 Linux下也可以使用两个工具,剪藏的话安装比较简单,印象笔记客 ...
- [BZOJ 4817] [SDOI 2017] 树点涂色
Description Bob有一棵 \(n\) 个点的有根树,其中 \(1\) 号点是根节点.Bob在每个点上涂了颜色,并且每个点上的颜色不同. 定义一条路径的权值是:这条路径上的点(包括起点和终点 ...
- 初步了解jQuery
jQuery 库可以通过一行简单的标记被添加到网页中. jQuery是一个JavaScript函数库. jQuery是一个轻量级的"写的少,做的多"的JavaScript库. jQ ...
- Spring中的AOP 专题
Caused by: java.lang.IllegalArgumentException: ProceedingJoinPoint is only supported for around advi ...
- ADO.NET中的五大内置对象
ADO.NET中的五大内置对象 学习链接:https://blog.csdn.net/wxr15732623310/article/details/51828677
- 20175209 《Java程序设计》第四周学习总结
20175209 2018-2019-2 <Java程序设计>第四周学习总结 教材知识点总结 1.子类和父类: 子类的继承性:子类与父类在同一包中——子类继承父类中不是private的变量 ...
- python httpserver
python3: python -m http.server 80 python2: python -m SimpleHTTPServer 9004
- Ubuntu 开机自动挂载硬盘
1.查看Linux硬盘信息: $ sudo fdisk -l 2.格式化硬盘(根据需要确定文件系统): sudo mkfs.xfs /dev/sdb 3.创建/data目录 sudo mkdir /d ...