在 iOS / iPad 上编写绘画应用程序的最佳方法

Best approach for coding a painting app on iOS / iPad

我正在尝试为 iPad 构建一个 drawing/painting 应用程序,使用带纹理的画笔笔尖和纸张。

到目前为止,我遇到的所有绘图应用程序示例代码似乎都是通过抚摸路径来工作的。但是,我想在整个路径上实际应用纹理,以模拟油刷或木炭。

这是画笔笔尖纹理的示例:Bursh tip

使用相同笔尖绘画时的结果:Result

在结果中,顶部输出是 "brush tip" 纹理沿路径应用时的样子。

底部结果是沿路径以非常小的步长应用的纹理。那些在 Photoshop 中使用过自定义画笔的人会发现这很熟悉。

几年前我曾在 Processing 中制作过这个原型(后来我丢失了源代码),并让它实时运行。

在处理中,我将画笔笔尖 PNG 和 canvas(或我正在绘制的图像)都转换为整数数组。然后,我只是将值从画笔笔尖复制到 canvas 纹理的适当索引处。在循环结束时,我显示了那个时间步长的图像。在鼠标返回的每个点之间重复此操作数十次。

我如何在 iOS 中实时处理此问题?我尝试了这个 (https://blog.avenuecode.com/how-to-use-uikit-for-low-level-image-processing-in-swift),但速度太慢了。

这让我相信 Metal 可能是唯一的出路。这是真的吗,还是不必要地使它复杂化了?

感谢您的指导!

PS。我在 Swift 5 编码,目标 iOS 13,在 Xcode 11.5.

欢迎光临!

我建议您查看 Core Image。它是 Apple 的图像处理框架(比 Metal 更高级别,但它可以与 Metal 集成)。不幸的是,该文档有点过时,但我相信您可以将其翻译成 Swift.

Here Apple describes how you would realize a painting app with Core Image and here可以下载对应的示例工程