我希望能够使用它作为我的笔画进行绘制。我将如何尽可能高效地做到这一点,并且在绘图时,我正在考虑 CGPatternRef,但我真的不知道该怎么做。
编辑:
它不需要扭曲到路径。我只是无法在 Illustrator 中解决该问题。
我希望能够使用它作为我的笔画进行绘制。我将如何尽可能高效地做到这一点,并且在绘图时,我正在考虑 CGPatternRef,但我真的不知道该怎么做。
编辑:
它不需要扭曲到路径。我只是无法在 Illustrator 中解决该问题。
Apple 文档有帮助吗?
请参阅Quartz 2D 编程指南、模式如何工作或一般模式中的部分。
以下是如何绘制起点(来自上述文档),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);
}
只需添加曲线变换并在每个点绘制星星。
您可以尝试将您的 Illustrator 文档导入此应用程序:Opacity,然后执行“导出为源代码”。
请参阅此处: http: //likethought.com/opacity/workflow/了解更多信息。
您将需要走路径并以相等的距离(沿路径)计算曲线的坐标。这是不贵的。旋转有点毛茸茸(围绕切线旋转),但总的来说,这是一个基本的贝塞尔曲线问题。只需求解曲线方程并在每个顶点处渲染一颗星。
没有任何内置功能可以做到这一切。您可以查询相交点,但只有渲染才能解决曲线问题。这是由 CoreGraphics 封装的,因此您无法将其拉出或利用它们已有的东西。
这是你应该考虑自己写的东西。这并不难;诚实。只需要对微积分有基本的了解……如果有的话。如果您自己编写,您甚至可以根据需要添加变形效果。
这看起来像是 OpenGL 的工作。CoreGraphics 没有提供我所知道的任何简单方法来根据它们与路径的接近程度来扭曲星星。