2011-09-28 34 views
4

它有一种方法可以像CorelDraw或Adobe Flash等应用程序绘制复杂的形状,将其保存或导出为PDF格式,然后在iOS中使用Core Graphics将其打开。 这个想法是,用CorelDraw绘制一个形状,一个矢量,例如,它就是路径。没有颜色或填充。然后可以直接由Core Graphics将其打开,将其作为CGPath添加到上下文中,然后能够操作它,例如用纯色或渐变或图案填充它。CGPathRef和PDF

底线是,我正在寻找一种在Corel或Flash等用户友好环境中绘制复杂形状的方法,并将其导出为可在Core Graphics中操作的vactor。而建议或帮助真的很明智。

谢谢。

回答

2

SVGKit无法正常工作,因为我需要。虽然我应该说这很好。还有其他资源,我找到了,如果有人在这篇文章中停留,并且正在寻找解决方案,我会将它们留在这里以备将来参考。

Converting SVG Paths to Objective-C Paths良好的简单路径;笔画和填充可以稍后通过使用协议来操作。复杂的路径混淆起来。

SVGKit适合于在程序过程中创建图像和动画。但是,笔划,填充,路径不能被操纵。

Opacity您可以导出为源代码,因此您可以更好地控制笔触,路径和填充。随着路径变得越来越复杂,手动管理代码变得越来越困难。另一个问题是在导出时,程序添加了与分辨率相关的代码。通过大约300多行代码来修复它是非常痛苦的,因此它不依赖于分辨率。通过最终产品不会混淆,并且可以通过协议操纵。图层是CGLayers,而不是CALayers。

0

如您所说,如果您拥有PDF文件(来自Corel或其他应用程序),则可以使用CoreGraphics显示它们。

看看的:

然后,有一个CGContextDrawPDFPage功能,可以使用在给定的图形绘制一个PDF页面上下文,通常在UIView子类的​​方法中。

+0

谢谢。我知道这些方法。这不是我正在寻找的。我试图从PDF文件中将路径引用添加到CGContext,同时保留它们的CGPath属性。这些方法基本上是绘制PDF,而绘制的PDF不会响应诸如CGContextFillRect等函数。 – Canopus

+0

是的,但您需要使用传递给'drawLayer:inContext:'方法的上下文。它只是'CGContextRef'的一个实例,所以它应该响应......首先在上下文中绘制PDF页面,然后根据需要修改上下文。 – Macmade

+0

它不起作用。(1)在Flash或Corel中绘制一个圆圈 - 不填充,只是描边,(2)保存/导出为PDF,(3)将其添加到您的Xcode项目资源中,(4)打开它作为CGPDFDocument,获取第一页并将其绘制到上下文中(CGLayer或UIGraphics,没有区别)(5)调用CGContextFillRect(context); ---如果它符合我的要求,你应该得到一个圆圈,充满黑色。但是它不会发生,因为绘制到上下文的CGPDFPage不表现为路径。我希望会。 – Canopus

0

从文件中加载CGPath s没有真正的内置方法,但您可能需要查看SVGKit。几乎每个现代矢量绘图应用程序都可以生成SVG文件。

+0

它看起来引人注目。我会给它一个镜头。谢谢。 – Canopus