到目前为止,在我的尝试中,我能够在普通图像上绘制线条,就像创建我自己的CGRect大小的简单上下文并在其上绘制线条一样。我看到的所有教程都是如何在创建的x * y大小的图像上下文中绘制。但我想在已经存在的图像上下文中绘制线条,如狗的图片并制作一些图纸。但到目前为止,我还没有得到我想要的结果。这是我测试的代码,没有分配图像,我能够获得线条画。但是随着图像的导入,我没有在图片上得到所需的线条。
let myImage = UIImage(named: "hqdefault.jpg")!
let myRGBA = RGBAImage(image: myImage)!
UIGraphicsBeginImageContextWithOptions(CGSize(width: rgbaImage.width, height: rgbaImage.height), false, 0)
let context:CGContextRef = UIGraphicsGetCurrentContext()!
CGContextMoveToPoint(context, CGFloat(100.0), CGFloat(100.0))
CGContextAddLineToPoint(context, CGFloat(150.0), CGFloat(150.0))
CGContextSetStrokeColorWithColor(context, UIColor.blackColor().CGColor)
CGContextStrokePath(context)
let image = UIGraphicsGetImageFromCurrentImageContext()
CGContextRestoreState(context)
UIGraphicsEndImageContext()
//: Return image
let view = UIImageView.init(image: image)
view.setNeedsDisplay()
这些是我在图像中画一条线并返回它的上下文的行。如果我尝试的话,我无法选择导入的图片上下文或绘制线条,因为它最终会返回nil。到目前为止,我无法弄清楚我的错误。你能建议如何在图像视图中的图片上画一条简单的线条吗?
答案 0 :(得分:3)
您能否建议如何在图像视图中的图片上绘制一条简单的线
不确定。制作图像上下文。将图像视图的图像绘制到上下文中。将线条划入上下文中。从上下文中提取结果图像并关闭上下文。将提取的图像分配给图像视图。
示例:
let im = self.iv.image! // iv is the image view
UIGraphicsBeginImageContextWithOptions(im.size, true, 0)
im.drawAtPoint(CGPointMake(0,0))
let p = UIBezierPath()
p.moveToPoint(CGPointMake(CGFloat(100.0), CGFloat(100.0)))
p.addLineToPoint(CGPointMake(CGFloat(150.0), CGFloat(150.0)))
p.stroke()
self.iv.image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
在:
后:
在第二张图像中,注意从(100,100)到(150,150)的行。