ios二维绘图之颜色渐变

颜色空间

cmyk印刷行业

RGB

渐变颜色:线性渐变,环状渐变

线性渐变:渐变的区域是当前context,垂直于startPoint <-> endPoint线段,并且于这条线段相交的直线

环状渐变:

corefoundation(c) -- foundation(oc)转换

强制转换:__bridge id(类型)

/****/自动引用计数

将绘制图片保存起来

创建image context -- 获取画布 -- …… -- 获取图片 -- 保存图片 -- 结束绘制

压缩成图片:

png(无损压缩)

jpg(有损压缩)

#import "LinearGradient.h"

@implementation LinearGradient

//线性渐变

- (void)drawRect:(CGRect)rect {

CGContextRef context =
UIGraphicsGetCurrentContext();

CGColorSpaceRef colorSpace =
CGColorSpaceCreateDeviceRGB();

//颜色的分量表示

CGFloat components[] = {1.0,
0.0, 0.0,
1.0, 0.0, 0.0,
1.0, 1.0,
0.0, 1.0, 0.0,
1.0};

//颜色的位置

CGFloat locations[] = {1.0,
0.0, 0.5};

CGGradientRef gradient =
CGGradientCreateWithColorComponents(colorSpace, components, locations,
3);

//渐变的区域是当前context,垂直于startPoint <-> endPoint线段,并且于这条线段相交的直线

CGContextDrawLinearGradient(context, gradient,
CGPointMake(100,
0),
CGPointMake(200,
0),
0);

CGFloat locations2[] = {0.4,
1.0};

CGGradientRef gradient2 =
CGGradientCreateWithColorComponents(colorSpace, components, locations2,
2);

//渐变的区域是当前context,垂直于startPoint <-> endPoint线段,并且于这条线段相交的直线

CGContextDrawLinearGradient(context, gradient2,
CGPointMake(210,
0),
CGPointMake(310,
0),
0);

}

@end

#import "RadialGradientView.h"

@implementation RadialGradientView

//环状渐变

- (void)drawRect:(CGRect)rect {

CGContextRef context =
UIGraphicsGetCurrentContext();

CGColorSpaceRef colorSpace =
CGColorSpaceCreateDeviceRGB();

NSArray *array = @[(__bridge
id)[UIColor
redColor].CGColor, (__bridge
id)[UIColor
blueColor].CGColor, (__bridge
id)[UIColor
purpleColor].CGColor];

CGFloat locations[] = {0.0,
0.5, 1.0};

CGGradientRef gradient =
CGGradientCreateWithColors(colorSpace, (__bridge
CFArrayRef)array, locations);

CGContextDrawRadialGradient(context, gradient,
CGPointMake(200,
200),
0, CGPointMake(150,
200),
100, 0);

}

@end

//将绘制图片保存

#import "ViewController.h"

@interface
ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

[super
viewDidLoad];

UIGraphicsBeginImageContext(CGSizeMake(200,
200));

CGContextRef context =
UIGraphicsGetCurrentContext();

CGContextSetFillColorWithColor(context, [UIColor
yellowColor].CGColor);

CGContextFillRect(context,
CGRectMake(0,
0, 100,
100));

UIImage *image =
UIGraphicsGetImageFromCurrentImageContext();

NSData *data =
UIImageJPEGRepresentation(image, 1.0);

//    NSData *data = UIImagePNGRepresentation(image);

[data writeToFile:@"/Users/apple/desktop/image.jpg"
atomically:YES];

UIGraphicsEndImageContext();

}

- (void)didReceiveMemoryWarning {

[super
didReceiveMemoryWarning];

}

@end

时间: 2024-10-12 00:18:37

ios二维绘图之颜色渐变的相关文章

Ios二维码扫描(系统自带的二维码扫描)

Ios二维码扫描 这里给大家介绍的时如何使用系统自带的二维码扫描方法和一些简单的动画! 操作步骤: 1).首先你需要搭建UI界面如图:下图我用了俩个imageview和一个label 2).你需要在你当前的控制器中导入 #import <AVFoundation/AVFoundation.h> <AVCaptureMetadataOutputObjectsDelegate>代理 3).在@interface中定义 @property (nonatomic,strong)AVCapt

MATLAB二维绘图(二)向图中添加标题,坐标轴,图标和文字信息

MATLAB二维绘图(二)向图中添加标题,坐标轴,图标和文字信息 1.添加标题.图例.x轴信息和y轴信息,示例: %% 添加标题 clear; clc; close all; x = 0:0.1:2*pi; y1 = sin(x); y2 = exp(-x); plot(x, y1, '--*', x, y2, ':o'); xlabel('t = 0 to 2\pi'); % 添加x轴信息 ylabel('values of sin(t) and e^{-x}') % 添加y轴信息 e^{-x

iOS二维码、条形码生成(可指定大小、颜色)

一.前言: iOS7.0之后可以利用系统原生 API 生成二维码, iOS8.0之后可以生成条形码, 系统默认生成的颜色是黑色. 在这里, 利用以下方法可以生成指定大小.指定颜色的二维码和条形码, 还可以添加背景颜色.阴影效果, 以下是具体方法. 二.二维码生成 因为返回的都是UIImage 所以我写了一个UIImage的分类 // UIimage(QRCode).h 文件 //Avilable in iOS 7.0 and later + (UIImage *)qrCodeImageWithC

iOS二维码的生成与扫描

由于近期工作中遇到了个需求:需要将一些固定的字段 在多个移动端进行相互传输,所以就想到了 二维码 这个神奇的东东! 现在的大街上.连个摊煎饼的大妈 都有自己的二维码来让大家进行扫码支付.可见现在的二维码使用率多高, 不光如此,在很多的社交类的APP 基本都有扫一扫加好友这个功能吧,因此决定学一学这个神奇的东西. 查找了一些资料博客啊发现,iOS7之前 对于开发人员来说 熟悉的第三方QRCode库有: ZXingGoogle出品并开源 一直到现在都还有专人维护 是世界上使用最广的二维码库 iOS上

IOS二维码扫描IOS7系统实现

扫描相关类 二维码扫描需要获取摄像头并读取照片信息,因此我们需要导入系统的AVFoundation框架,创建视频会话.我们需要用到一下几个类: AVCaptureSession 会话对象.此类作为硬件设备输入输出信息的桥梁,承担实时获取设备数据的责任 AVCaptureDeviceInput 设备输入类.这个类用来表示输入数据的硬件设备,配置抽象设备的port AVCaptureMetadataOutput 输出类.这个支持二维码.条形码等图像数据的识别 AVCaptureVideoPrevie

iOS 二维码扫描报错问题之一

iOS 开发中在导入第三方的二维码扫描 ZBarSDK在模拟器能正常运行,但真机调试的过程中可能会报错,报错的信息如下目前的找到的一种解决办法如下图所示:在Build Settings里面搜bit  在BuildOptions里面修改Enable Bitcode为No,这样真机就可以正常运行了,如下图所示: 修改之后目前真机上可以正常运行

iOS:二维码的生成

所谓的二维码就是一个图片,只不过在iOS需要借用<CoreImage/CoreImage.h>来实现,  并且二维码图片是通过CIImage来转成UIImage的.具体步骤如下: // 1.创建一个滤镜    CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];        // 2.设置默认的属性    [filter setDefaults];        // 3.给滤镜设置数据   

关于IOS二维码创建、扫描的使用方式(IOS,ZBar支持64位解决办法)

在IOS开发过程中,有时需要使用到二维码扫描及二维码生成,现在介绍我自己测试并通过的方法: (一) 二维码生成方式: 需要工具:libqrencode库,QRCodeGenerator.h,QRCodeGenerator.m文件,说实话,在网上找这两个文件确实废了我不少的功夫,下面我会把详细的下载地址贴上,相信定能节省大家不少的时间. 有了以上两个文件之后你就可以将它添加到你到工程中,使用相应的接口API便可以完成相应的功能. imageview.image = [QRCodeGenerator

二维绘图引擎:圆、半圆、弧线绘制

二维画图引擎-画圆.半圆.弧线 // // QHCircle.m // 绘图 // #import "QHCircle.h" @implementation QHCircle // Only override drawRect: if you perform custom drawing. // An empty implementation adversely affects performance during animation. /** * 当View第一次显示的时候调用 *