如何使用核心图形绘制带有自定义图案/图像的线条/笔划?

Posted

技术标签:

【中文标题】如何使用核心图形绘制带有自定义图案/图像的线条/笔划?【英文标题】:How to draw a line/stroke with custom pattern/image using core graphics? 【发布时间】:2021-01-08 19:50:02 【问题描述】:

我正在开发一个 pdf 注释应用程序,到目前为止,我可以使用“PDFAnnotationSubtype.stamp”中的图像画一条线。

图片:

使用以下代码:

public class ImageAnnotation: PDFAnnotation 

 init(with image: UIImage!, forBounds bounds: CGRect, withProperties properties: [AnyHashable : Any]?) 
    super.init(bounds: bounds, forType: PDFAnnotationSubtype.stamp, withProperties: properties)

    self._image = image


override public func draw(with box: PDFDisplayBox, in context: CGContext) 
    guard let cgImage = self._image?.cgImage else  return 
    context.draw(cgImage, in: self.bounds)


结果:

使用这种方法,我最终会在每个 CGpoint 添加图像(换句话说,每个 cgpoint 都是单独的 PDFAnnotation)。如何将整个路径制作为单个笔画/单个注释,这样当我尝试擦除时,应该清除整个路径,而不是仅清除几个 cgpoint/像素。

【问题讨论】:

【参考方案1】:

在搜索了几个资源后发现我们可以使用“CGPattern”来纹理线条。

参考: https://developer.apple.com/documentation/coregraphics/cgpattern

对于尝试此操作的任何其他人,请确保使用“填充”和“描边”模式玩弄“drawingPath”。

【讨论】:

以上是关于如何使用核心图形绘制带有自定义图案/图像的线条/笔划?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Apple Watch 上绘制自定义图形?

如何在 Flutter 的画布上的路径内绘制图案?

如何让用户在 WPF 中使用画布绘制线条

Quartz2D

视觉基础篇11 # 图案生成:如何生成重复图案分形图案以及随机效果?

如何自定义 MKPolyLineView 绘制不同风格的线条