我希望能够使用它作为我的笔画。我怎么能尽可能高效地做到这一点,而且在飞行中,我在考虑CGPatternRef,但我真的不知道该怎么做。
修改 它不需要扭曲到路径。我只是不能在Illustrator中解决这个问题。
答案 0 :(得分:3)
您可以尝试将Illustrator文档导入此应用程序:Opacity,然后执行“导出为源代码”。
请参阅此处:http://likethought.com/opacity/workflow/了解更多信息。
答案 1 :(得分:3)
Apple doc是否有帮助?
请参阅Quartz 2D Programming Guide, How Patterns Work中的部分或一般的模式。
以下是如何画一个开头(从上面的文档中),PSIZE是星号:
static void MyDrawStencilStar (void *info, CGContextRef myContext)
{
int k;
double r, theta;
r = 0.8 * PSIZE / 2;
theta = 2 * M_PI * (2.0 / 5.0); // 144 degrees
CGContextTranslateCTM (myContext, PSIZE/2, PSIZE/2);
CGContextMoveToPoint(myContext, 0, r);
for (k = 1; k < 5; k++) {
CGContextAddLineToPoint (myContext,
r * sin(k * theta),
r * cos(k * theta));
}
CGContextClosePath(myContext);
CGContextFillPath(myContext);
}
只需添加曲线变换,并在每个点绘制星形。
答案 2 :(得分:2)
您需要走路径并以相等的距离(沿路径)计算曲线的坐标。这很便宜。旋转变得有点多毛(围绕切线旋转),但总的来说,这是一个基本的bézier curve问题。只需求解曲线方程并在每个顶点渲染一个星。
没有任何内置可以做到这一切。您可以查询交点的点,但只有渲染才能解决曲线。这是由CoreGraphics封装的,所以你不能把它拉出来或利用它们已有的东西。
这是你应该考虑自己写的东西。这并不困难;诚实。只需要对微积分有基本的了解......如果有的话。如果您自己编写,如果愿意,甚至可以添加变形效果。
答案 3 :(得分:0)
这看起来像OpenGL的工作。 CoreGraphics没有提供任何简单的方法,根据它们与路径的接近程度来扭曲星星。