Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
610 views
in Technique[技术] by (71.8m points)

ios - How to draw a line/stroke with custom pattern/image using core graphics?

Im working on a pdf annotation app, as of now i'm able to draw a line using image in "PDFAnnotationSubtype.stamp".

Image: enter image description here

using below code:

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)
}
}

Results: enter image description here

Using this method I end up adding image at every CGpoint(in other words every cgpoint is separate PDFAnnotation). How do I make the entire path as a single stroke/single annotation such that when I try to erase, the entire path should get cleared instead of only few cgpoint/pixels.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

After searching for several resources found out we can use "CGPattern" to texture the line.

Reference: https://developer.apple.com/documentation/coregraphics/cgpattern

For any one else trying this make sure to play around "drawingPath" with "fill" and "stroke" modes.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...