耶!!我已经想通了!!
请让我在这里讨论我的[问题已解决]。
对不起我的未分类艺术 :) 我为财产分离使它变得丰富多彩。
解释:
- 弧w/c 用作
corner-radii
.
- 的公式
points (x, y)
将在此处自动生成
corner-radii-points (x, y)
是目标。
points (x, y)
应该是唯一基于给定半径值进行调整的一项。
- 这部分的弯曲部分应该是静止的。
- 这些是假边框
inner-side-borders
。
- 诸如此类的属性
[x, y, width, height]
将取决于corner-radii-points(x, y)
和points(x, y)
。
- 内部四边形w/c 是
inner-rectangle
- 这只是作为掩护
- 这个的属性,例如
[x1, y1, x2, y2]
(这是一个多边形,所以我这样标记它)将取决于points (x, y)
现在我可以简单地做到这一点:
设计部分:
int w3 = rect.width >> 3;
int h3 = rect.height >> 3;
rect.setBorderRadius(C_NW, w3, h3);
rect.setBorderRadius(C_NE, w3, h3);
rect.setBorderRadius(C_SE, w3, h3);
rect.setBorderRadius(C_SW, w3, h3);
rect.setColors(C_NW, cc::getColor(COLORS::RED));
rect.setColors(C_NE, cc::getColor(COLORS::GREEN));
rect.setColors(C_SE, cc::getColor(COLORS::BLUE));
rect.setColors(C_SW, cc::getColor(COLORS::YELLOW));
rect.setBorderColor(B_TOP, cc::getColor(COLORS::WHITE));
rect.setBorderColor(B_RIGHT, cc::getColor(COLORS::WHITE));
rect.setBorderColor(B_BOTTOM, cc::getColor(COLORS::GRAY3));
rect.setBorderColor(B_LEFT, cc::getColor(COLORS::GRAY3));
rect.setBorderSize(B_TOP, 20);
rect.setBorderSize(B_RIGHT, 20);
rect.setBorderSize(B_BOTTOM, 20);
rect.setBorderSize(B_LEFT, 20);
结果:
rect
是具有闪电麦昆形象的那一款。
这些是我根据反复试验评估的公式。还要感谢Mark Garcia爵士通过演示一些图表来帮助我,并建议使用 MS Paint 进行可视化 :)
下一个问题是掩蔽,正如您所看到的那样,同时存在non-curved borders
和corner radius
,但我现在不会专注于此。
如果有人对这种矩形实现感兴趣,可以在这里私信我,我会给你源代码。