如何使用核心图形绘制带有自定义 pattern/image 的 line/stroke?
How to draw a line/stroke with custom pattern/image using core graphics?
我正在开发一个 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)
}
}
结果:
使用这种方法,我最终在每个 CG 点添加图像(换句话说,每个 CG 点都是单独的 PDFAnnotation)。如何将整个路径作为单个 stroke/single 注释,这样当我尝试擦除时,应该清除整个路径而不是只有几个 cgpoint/pixels.
搜索了几个资源后发现我们可以使用“CGPattern”对线条进行纹理处理。
参考:
https://developer.apple.com/documentation/coregraphics/cgpattern
对于尝试此操作的任何其他人,请确保使用“填充”和“描边”模式来玩弄“drawingPath”。
我正在开发一个 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)
}
}
结果:
使用这种方法,我最终在每个 CG 点添加图像(换句话说,每个 CG 点都是单独的 PDFAnnotation)。如何将整个路径作为单个 stroke/single 注释,这样当我尝试擦除时,应该清除整个路径而不是只有几个 cgpoint/pixels.
搜索了几个资源后发现我们可以使用“CGPattern”对线条进行纹理处理。
参考: https://developer.apple.com/documentation/coregraphics/cgpattern
对于尝试此操作的任何其他人,请确保使用“填充”和“描边”模式来玩弄“drawingPath”。