Bir DrawNode nesnesi kullanarak yuvarlatılmış köşeli bir Rect çizmek mümkün mü? Bence Bezier eğrileri kullanarak bir şey mümkün, ama bazı denemeler yaptım ve bununla başa çıkamayacağımı düşünüyorum. API baktığımızdaYuvarlatılmış Köşeler Cocos 2d-x Bezier ile rect
Ben sadece bu 2 işlevleri bulduk:
drawQuadBezier(const Vec2 &origin, const Vec2 &control, const Vec2 &destination, unsigned int segments, const Color4F &color)
drawCubicBezier(const Vec2 &origin, const Vec2 &control1, const Vec2 &control2, const Vec2 &destination, unsigned int segments, const Color4F &color)
[cevap sonrasında Modifiye]
Ben Cocos2dx yanıtını uyguladık, belki biri bulmak bu yararlı:
auto MagicConst = 0.552;
auto position = 150;
auto R = 50;
Vec2 TopLeft = Vec2(position, position + R * 2);
Vec2 TopRight = Vec2(position + R * 2, position + R * 2);
Vec2 BottomRight = Vec2(position + R * 2, position);
Vec2 BottomLeft = Vec2(position, position);
Vec2 originTL = Vec2(TopLeft.x, TopLeft.y - R);
Vec2 originTR = Vec2(TopRight.x - R, TopRight.y);
Vec2 originBR = Vec2(BottomRight.x - R, BottomRight.y);
Vec2 originBL = Vec2(BottomLeft.x, BottomLeft.y + R);
Vec2 control1TL = Vec2(TopLeft.x, (int) (TopLeft.y - R * (1 - MagicConst)));
Vec2 control1TR = Vec2((int) (TopRight.x - R * (1 - MagicConst)), TopRight.y);
Vec2 control1BR = Vec2((int) (BottomRight.x - R * (1 - MagicConst)), BottomRight.y);
Vec2 control1BL = Vec2(BottomLeft.x, (int) (BottomLeft.y + R * (1 - MagicConst)));
Vec2 control2TL = Vec2((int) (TopLeft.x + R * (1 - MagicConst)), TopLeft.y);
Vec2 control2TR = Vec2(TopRight.x, (int) (TopRight.y - R * (1 - MagicConst)));
Vec2 control2BR = Vec2(BottomRight.x, (int) (BottomRight.y + R * (1 - MagicConst)));
Vec2 control2BL = Vec2((int) (BottomLeft.x + R * (1 - MagicConst)), BottomLeft.y);
Vec2 destinationTL = Vec2(TopLeft.x + R, TopLeft.y);
Vec2 destinationTR = Vec2(TopRight.x, TopRight.y - R);
Vec2 destinationBR = Vec2(BottomRight.x, BottomRight.y + R);
Vec2 destinationBL = Vec2(BottomLeft.x + R, BottomLeft.y);
auto roundCorner = DrawNode::create();
roundCorner->drawCubicBezier(originTL, control1TL, control2TL, destinationTL, 10, Color4F::RED);
roundCorner->drawCubicBezier(originTR, control1TR, control2TR, destinationTR, 10, Color4F::GREEN);
roundCorner->drawCubicBezier(originBR, control1BR, control2BR, destinationBR, 10, Color4F::YELLOW);
roundCorner->drawCubicBezier(originBL, control1BL, control2BL, destinationBL, 10, Color4F::WHITE);
addChild(roundCorner);
Bu üretecek (sadece yüksek hassasiyet gerekmiyorsa int bazı casting yapılır) : http://i.stack.imgur.com/mdEOM.png
Artık köşeleri istediğiniz gibi yuvarlamak için MagicConst
'u değiştirebilirsiniz. MagicConst = 0.9
ile Örneğin
: http://i.stack.imgur.com/9V5cr.png
istediğim sonucudur bu! ;) (size @Mbo) thank
(Henüz gömülü görüntüyü) mesaj gönderemezsiniz: P
Teşekkürler @Mbo aklımı açtın, şimdi bunu mümkün kılmak için cocos2dx'de yazılan kodu kullanarak sorumu düzenliyorum;) –