如何在图像上绘制线条/颜料?

时间:2016-04-15 06:25:27

标签: ios swift uiimageview core-graphics

到目前为止,在我的尝试中,我能够在普通图像上绘制线条,就像创建我自己的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。到目前为止,我无法弄清楚我的错误。你能建议如何在图像视图中的图片上画一条简单的线条吗?

1 个答案:

答案 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()

在:

enter image description here

后:

enter image description here

在第二张图像中,注意从(100,100)到(150,150)的行。