cocos2dx API记录

ClippingNode 裁剪图片

-- 圆形图片
local drawNode = cc.DrawNode:create()
drawNode:drawDot(cc.p(0, 0), 100, cc.c4b(255,255,255,255))

local clippingnode = cc.ClippingNode:create(drawNode)
clippingnode:setAnchorPoint(cc.p(0.5,0.5))
clippingnode:setPosition(cc.p(960, 540))
-- 默认false,保留裁剪图片(如此例保留圆),否则反转
clippingnode:setInverted(true)
-- alpha阈值只有模板(drawNode)的alpha像素大于alpha阈值时内容才会被绘制。
-- alpha阈值范围应是0到1之间的浮点数。 
-- alpha阈值默认为1(关闭)
clippingnode:setAlphaThreshold(0)

local sprite = cc.Sprite:create("test.png")    
clippingnode:addChild(sprite)

self:addChild(clippingnode)

圆角矩形(转)

function cornerRadius(rect, radius, segments)
    assert(rect and #rect == 2, string.format("cornerRadius - rect length is %d, was expecting 2 ", #rect))

    local segments    = segments or 100
    local origin      = cc.p(rect.x, rect.y)
    local destination = cc.p(rect.x + rect.width, rect.y + rect.height)
    if not radius then
        return {origin, cc.p(origin.x, destination.y), destination, cc.p(origin.y, destination.x)}
    end 

    -- 算出1/4圆
    local coef     = math.pi / 2 / segments
    local vertices = {}

    for i=0, 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(0, 0)
    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 pPolygonPtArr  = {}

    -- 左上角
     tagCenter.x = minX + radius;
     tagCenter.y = maxY - radius;

     for i=0, segments do
       local x = tagCenter.x - vertices[i + 1].x
       local y = tagCenter.y + vertices[i + 1].y
       table.insert(pPolygonPtArr, cc.p(x, y))
     end

     -- 右上角
     tagCenter.x = maxX - radius;
     tagCenter.y = maxY - radius;

     for i=0, 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=0, segments do
       local x = tagCenter.x + vertices[i + 1].x
       local y = tagCenter.y - vertices[i + 1].y
       table.insert(pPolygonPtArr, cc.p(x, y))
     end

     -- 左下角
     tagCenter.x = minX + radius;
     tagCenter.y = minY + radius;

     for i=0, 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
     return pPolygonPtArr
end

-- 示例
local pPolygonPtArr = cornerRadius({x = 400, y = 400, width = 200, height = 200}, 20, 100)
local drawNode = cc.DrawNode:create() 
drawNode:drawPolygon(pPolygonPtArr, #pPolygonPtArr,cc.c4f(1,0,0,1), 1, cc.c4f(0,1,0,1))
self:addChild(drawNode)

保存纹理到本地

local render = cc.RenderTexture:create(texture:getContentSize().width, texture:getContentSize().height)
render:beginWithClear(0, 0, 0, 0)
local sp = cc.Sprite:createWithTexture(texture)
sp:setPosition(texture:getContentSize().width/2, texture:getContentSize().height/2)
sp:visit()
render:endToLua()
local savepath = "res/texture.png"
render:saveToFile(savepath, cc.IMAGE_FORMAT_PNG, true)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值