在实现某个功能时需要一张图片,一个高为2px长为10px的线条。因为本人photoshop用的不好,做不出这个图片。
可咱是程序员,就想着能否用程序生成这个一个图片呢?答案是肯定的,下面说下怎么实现生成一个白色线条的图片。
首先要取得一个CGContextRef(上下文)
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(NULL, 10, height, 8, 0, colorSpace
,kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big );
接着就在这个上下文上画出自己想要的图形
CGContextSetLineWidth(context, lineWidth); //线宽
CGContextSetStrokeColorWithColor(context, lineColor.CGColor); //颜色
CGContextMoveToPoint(context,0,height/2-lineWidth/2); //起点
CGContextAddLineToPoint(context,10,height/2-lineWidth/2); //终点
CGContextStrokePath(context); //按照设置画出图形
然后产生一个CGimage:
CGImageRef cgImage = CGBitmapContextCreateImage(context);
//释放资源
CGColorSpaceRelease(colorSpace);
CGContextRelease(context);
//取得uiimage
UIimage *image = [UIImage imageWithCGImage:cgImage];
在产生CGImage后可以根据需要生成一个UIimage 或者转成文件形式存储。
实现了一个线条图片后,其他简单的图形也就可以实现了。
下面一段代码是实现一个实心的圆形:
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(NULL, 20, 20, 8, 0, colorSpace
,kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big );
CGContextSetRGBFillColor(context, 1.0,1.0,1.0,1.0);
CGContextFillEllipseInRect(context, CGRectMake(0, 0, 20, 20));
CGImageRef cgImage = CGBitmapContextCreateImage(context);
CGColorSpaceRelease(colorSpace);
CGContextRelease(context);