文档章节

绘制背景色渐变的矩形

hejunbinlan
 hejunbinlan
发布于 2015/06/23 16:21
字数 347
阅读 56
收藏 0

两段代码,首先是使用方法

01 CGContextRef context = UIGraphicsGetCurrentContext();
02     NSArray *colors = [NSArray arrayWithObjects:
03                        [UIColor colorWithRed:225.0 / 255.0 green:225.0 / 255.0 blue:225.0 / 255.0 alpha:1.0],
04                        [UIColor colorWithRed:168.0 / 255.0 green:168.0 / 255.0 blue:168.0 / 255.0 alpha:1.0],
05                        nil];
06     [self _drawGradientColor:context
07                         rect:CGRectMake(rX, rY, rW, rH)
08                      options:kCGGradientDrawsAfterEndLocation
09                       colors:colors];
10     CGContextStrokePath(context);// 描线,即绘制形状
11     CGContextFillPath(context);// 填充形状内的颜色

在一段就是绘制背景色渐变的矩形

01 /**
02  * 绘制背景色渐变的矩形,p_colors渐变颜色设置,集合中存储UIColor对象(创建Color时一定用三原色来创建)
03  **/
04 - (void)_drawGradientColor:(CGContextRef)p_context
05                       rect:(CGRect)p_clipRect
06                    options:(CGGradientDrawingOptions)p_options
07                     colors:(NSArray *)p_colors {
08     CGContextSaveGState(p_context);// 保持住现在的context
09     CGContextClipToRect(p_context, p_clipRect);// 截取对应的context
10     int colorCount = p_colors.count;
11     int numOfComponents = 4;
12     CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB();
13     CGFloat colorComponents[colorCount * numOfComponents];
14     for (int i = 0; i < colorCount; i++) {
15         UIColor *color = p_colors[i];
16         CGColorRef temcolorRef = color.CGColor;
17         const CGFloat *components = CGColorGetComponents(temcolorRef);
18         for (int j = 0; j < numOfComponents; ++j) {
19             colorComponents[i * numOfComponents + j] = components[j];
20         }
21     }
22     CGGradientRef gradient =  CGGradientCreateWithColorComponents(rgb, colorComponents, NULL, colorCount);
23     CGColorSpaceRelease(rgb);
24     CGPoint startPoint = p_clipRect.origin;
25     CGPoint endPoint = CGPointMake(CGRectGetMinX(p_clipRect), CGRectGetMaxY(p_clipRect));
26     CGContextDrawLinearGradient(p_context, gradient, startPoint, endPoint, p_options);
27     CGGradientRelease(gradient);
28     CGContextRestoreGState(p_context);// 恢复到之前的context
29 }

还有一种实现方式

1 CAGradientLayer *gradient = [CAGradientLayer layer];
2 gradient.frame = CGRectMake(rX, rY, rW, rH);
3 gradient.colors = [NSArray arrayWithObjects:
4                        (id)[UIColor blackColor].CGColor,
5                        (id)[UIColor grayColor].CGColor,
6                        (id)[UIColor blackColor].CGColor,
7                         nil];
8 [self.view.layer insertSublayer:gradient atIndex:0];


本文转载自:http://blog.csdn.net/majiakun1/article/details/17848285

共有 人打赏支持
hejunbinlan
粉丝 41
博文 595
码字总数 21569
作品 0
浦东
高级程序员
私信 提问
使用Span实现各种酷炫效果

前一段时间一直在做富文本展示和文本处理,主要用到了Html.fromHtml()实现加载网页,但实现整段文本的某些特殊如个别文字的点击,改背景色、前景色等效果,就用到了我们今天要用到的Span这个...

安卓干货营
2017/12/07
0
0
【CSS】渐变背景(background-image)

0007.jpg 以前,我们要实现这种渐变,可能要用 Photoshop 或 Fireworks 创建一个渐变图形,然后使用 background-image 属性把渐变图形放在元素的背景中。 现在,CSS支持渐变背景,可以理解为...

KelvinZ
2017/11/30
0
0
GradientDrawable

GradientDrawable 支持使用渐变色来绘制图形,通常可以用作Button或是背景图形。 GradientDrawable允许指定绘制图形的种类:LINE,OVAL,RECTANGLE或是RING ,颜色渐变支持LINEARGRADIENT,R...

Ro6k
2012/11/21
0
0
HTML5 绘图技术 「Canvas」和「SVG」

本文重点还是要介绍Canvas,但每次提起Canvas,脑海总会想起SVG,因此先做个简单的对比。   *Canvas 和 SVG 对比  Canvas 和 SVG 都是 HTML5 中推荐的也是主要的2D图形绘制技术 Canvas 提供...

果汁凉茶丶
2017/11/13
0
0
第二章 1.绘制文本

在上一节中给出了如下方法绘制文本 DrawText (hdc, TEXT ("Hello Windows CE!"), -1, &rect, DTCENTER | DTVCENTER | DT_SINGLELINE); DrawText是一个相当高级的函数,允许由程序显示文本,而...

技术小胖子
2017/11/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

java框架学习日志-7(静态代理和JDK代理)

静态代理 我们平时去餐厅吃饭,不是直接告诉厨师做什么菜的,而是先告诉服务员点什么菜,然后由服务员传到给厨师,相当于服务员是厨师的代理,我们通过代理让厨师炒菜,这就是代理模式。代理...

白话
24分钟前
5
0
Flink Window

1.Flink窗口 Window Assigner分配器。 窗口可以是时间驱动的(Time Window,例如:每30秒钟),也可以是数据驱动的(Count Window,例如:每一百个元素)。 一种经典的窗口分类可以分成: 翻...

满小茂
25分钟前
3
0
my.ini

1

architect刘源源
40分钟前
3
0
docker dns

There is a opensource application that solves this issue, it's called DNS Proxy Server It's a DNS server that solves containers hostnames, if could not found a hostname that mat......

kut
49分钟前
5
0
寻找数学的广度——《这才是数学》读书笔记2700字

寻找数学的广度——《这才是数学》读书笔记2700字: 文|程哲。数学学习方式之广:国内外数学教育方面的专家,进行了很多种不同的数学学习方式尝试,如数学绘本、数学游戏、数学实验、数学步道...

原创小博客
55分钟前
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部