直接上代码
auto headImg = ImageView::create();//首先确定模板,这个是头像的显示控件
headImg->setAnchorPoint(Vec2(0.5, 0.5));//设置锚点
headImg->setPosition(Vec2(0, 0));//位置
headImg->setContentSize(size);//大小
setHeadImage(headImg, "", 1);//头像的加载接口,直接loadTexture
auto pClipNode = ClippingNode::create();//裁剪节点
pClipNode->setAnchorPoint(Vec2(0.5, 0.5));
donghuaPanel->addChild(pClipNode);//将节点加到layer上
pClipNode->addChild(headImg);//将内容层加载裁剪节点上
pClipNode->setPosition(Vec2(donghuaSize.width/2,donghuaSize.height/2));
auto pScentilCircle = Sprite::create("res/HunderdPeopleRoom/stencil.png");//设置裁剪模板
float scale1 = pScentilCircle->getContentSize().width /(headImg->getContentSize().width);//设置头像裁剪后的X方向的缩放大小
float scale2 = pScentilCircle->getContentSize().height / (headImg->getContentSize().height);//设置头像裁剪后的Y方向的缩放大小
headImg->setScaleX(scale1);
headImg->setScaleY(scale2);
pClipNode->setStencil(pScentilCircle);//设置裁剪节点的模板
pClipNode->setInverted(false);// > false :显示被模板裁剪下来的底板内容。默认为false。 > true :显示剩余部分。// //默认为false //表示显示被裁剪下来的底板内容
pClipNode->setAlphaThreshold(0.8f);//只有模板(stencil)中像素的alpha值大于alpha阈值时,内容才会被绘制。alpha阈值(alphaThreshold):取值范围[0,1]。 默认为 1 ,表示alpha测试默认关闭,即全部绘制。若不是1 ,表示只绘制模板中,alpha像素大于alphaThreshold的内容。












网友评论