加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ios – 在UIImageView的内容周围绘制边框

发布时间:2020-12-15 01:50:12 所属栏目:百科 来源:网络整理
导读:我有一个带有图像的UIImageView是一辆带有透明背景的汽车: 我想在汽车周围画一个边框: 我怎样才能达到这个效果? 目前,我已经以这种方式测试了CoreGraphics,但没有取得好成绩: // load the image UIImage *img = carImage; UIGraphicsBeginImageContext(i
我有一个带有图像的UIImageView是一辆带有透明背景的汽车:

我想在汽车周围画一个边框:

我怎样才能达到这个效果?

目前,我已经以这种方式测试了CoreGraphics,但没有取得好成绩:

// load the image
    UIImage *img = carImage;

    UIGraphicsBeginImageContext(img.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    [[UIColor redColor] setFill];
    CGContextTranslateCTM(context,img.size.height);
    CGContextScaleCTM(context,1.0,-1.0);

    CGContextSetBlendMode(context,kCGBlendModeNormal);
    CGRect rect = CGRectMake(0,img.size.width * 1.1,img.size.height*1.1);
    CGContextDrawImage(context,rect,img.CGImage);

    CGContextClipToMask(context,img.CGImage);
    CGContextAddRect(context,rect);
    CGContextDrawPath(context,kCGPathFill);

    // generate a new UIImage from the graphics context we drew onto
    UIImage *coloredImg = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

有帮助吗?谢谢.

解决方法

这是我做的:

我在Swift中做过它只是为了在游乐场中检查它,认为你可以轻松地将它转换为Objective-C:

import UIKit


func drawOutlie(#image:UIImage,color:UIColor) -> UIImage
{
  var newImageKoef:CGFloat = 1.08

  var outlinedImageRect = CGRect(x: 0.0,y: 0.0,width: image.size.width * newImageKoef,height: image.size.height * newImageKoef)

  var imageRect = CGRect(x: image.size.width * (newImageKoef - 1) * 0.5,y: image.size.height * (newImageKoef - 1) * 0.5,width: image.size.width,height: image.size.height)

  UIGraphicsBeginImageContextWithOptions(outlinedImageRect.size,false,newImageKoef)

  image.drawInRect(outlinedImageRect)

  var context = UIGraphicsGetCurrentContext()
  CGContextSetBlendMode(context,kCGBlendModeSourceIn)

  CGContextSetFillColorWithColor(context,color.CGColor)
  CGContextFillRect(context,outlinedImageRect)
  image.drawInRect(imageRect)

  var newImage = UIGraphicsGetImageFromCurrentImageContext()
  UIGraphicsEndImageContext()

  return newImage

}

var imageIn = UIImage(named: "158jM")

var imageOut = drawOutlie(image: imageIn,UIColor.redColor())

那么它是怎样工作的?

>我们创建干净的上下文(又名画布),其尺寸略大于原始图像(用于轮廓)
>我们在整个画布上绘制图像
>我们用颜色填充该图像
>我们在顶部绘制较小的图像

您可以更改轮廓大小更改此属性:var newImageKoef:CGFloat = 1.08

这是我在操场上的结果

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读