`

画线性渐变的条条

阅读更多

代码如下:

 

CGGradientRef buildCGGradient(UIColor **colors, int item) {
	CGFloat colorComponents[item * 4];
	
	for (int i = 0; i < item; i++) {
		
		
		UIColor *color = colors[i];
		
		const CGFloat *components = CGColorGetComponents(color.CGColor);
		for (int j = 0; j < 4; j++) {
			colorComponents[i * 4 + j] = components[j];
		}		
	}
	
	CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB();
	CGGradientRef gradient = CGGradientCreateWithColorComponents(rgb, colorComponents, NULL, item);
	CGColorSpaceRelease(rgb);
	return gradient;
}

......
CGPoint start = CGPointMake(0.0, 0.0);
CGPoint end = CGPointMake(0.0, barBounds.origin.y + barBounds.size.height);
UIColor *color1 = [[UIColor alloc] initWithRed: 0xFF/255.0 green:0xFF/255.0 blue:0xFF/255.0 alpha:1.0];
UIColor *color2 = [[UIColor alloc] initWithRed: 0x52/255.0 green:0x52/255.0 blue:0x52/255.0 alpha:1.0];
UIColor *emptyColors[2] = { color1, color2};

CGGradientRef gradientRef = buildCGGradient(emptyColors, 2);
CGContextDrawLinearGradient(context, gradientRef, start, end, options);
CGGradientRelease(gradientRef);
 

 

 

代码不完整, 但是很简单,往往有些人只是不知道用什么方法而已,上面的红色标注(buildCGGradient, CGContextDrawLinearGradient). 这里需要注意的是start,end变量.这个变量不是从哪画到哪的意思,而是颜色渐变的一个方向. 

 

 

 

 

当你用上面的画出来了后就会发现,竟然没办法指定宽度. 利用clip可以解决的啦.哈哈

 

for(...) {

      ......
      CGContextSaveGState(context);
      CGContextClipToRect(context, clip);
      ......
      ......
      ......
      CGGradientRef gradientRef = buildCGGradient(colors, itemOfSegment);
      CGContextDrawLinearGradient(context, gradientRef, start, end, options);
      CGGradientRelease(gradientRef);
      CGContextRestoreGState(context);

}

 

虽然代码不全, 但是大致上就这样了. 效果图:

 


  • 大小: 11.8 KB
分享到:
评论

相关推荐

    宏华A'Tex ver 2000 Build 20020225 65 零售版

    图象开路:根据各种印花工艺要求对图象进行开路遮边,操作简单,只需画一条开路曲 线即可。 云纹挂网:对不同的图象和不同的工艺要求有不同的网型和任何角度、任何线数的网点 可供选择。 激光照排:可以对单回位...

    Visual Basic绘图程序设计 任德记编著

    二、异径换向渐变段表面展开图的自动绘制 习题 第五章 立体图的自动绘制 第一节 立体图变换矩阵 一、轴测投影变换矩阵 二、透视投影变换矩阵 第二节 轴测图自动绘制 一、矩阵变换法绘制轴测图 二、代数变换法绘制轴...

    想要表白的看这里,教你用python画不同类型的心形图虏获芳心,值得收藏!!

    虏获芳心数学中美丽的心形线:r=a(1-sinθ)利用python的turtle教你动态的爱心图表白利用python的plt教你画渐变颜色爱心图表白利用python的plt教你画3D爱心图表白利用python一行代码教你画爱心图表白利用python几行...

    计算机图形学课程设计任务书[1].doc

    " "设计坐标系,画出二维图形; " "用中点法或区域代码的方法实现裁剪。 " "3、《图形变换》 " "具体要求: " "绘制出图形; " "实现图形的平移、旋转、缩放、错切等变换。 " "4、《绘制曲线》 " "具体要求: " ...

    RETAS_HD_PRO.zip

    同样,该功能也允许您使用透光桌(Light Table)中的颜色进行上色,喷枪工具(Airbrush tool)也有较大的改进,用户还可以通过自定义 alpha 通道控制色彩的透明度,并能产生三种颜色渐变的特效。 RETAS!PRO PaintMan HD...

    Flash格斗动画的动作设计和动作的制作.doc

    3: 在文档中画一个黑色的圆, 删除边线, 并按F8创建元件, 然后分别画上各个肢体,如图; 4: 按Ctrl+A全选, 然后右键- 分散到图层. 5: 开启[紧贴至对象]的功能, 组合人物并进行造型的修改, 以达到良好的比例. ...

    安卓无限设计 Infinite Design 3.4.19 中文多语免费版.zip

    使用 Cityscapes 3D 工具时,3 条绘图变得更简单,其中5条指令覆盖了不同的角度。 此外,您可以轻松地对全部或边框进行颜色填充。更改对象的透明度,用小插图,渐变,填充颜色填充对象。如果您想使调色板多样化,则...

    Qt Creator 的安装和hello world 程序+其他程序的编写--不是一般的好

    5.双击这一条,可打开它的编辑对话框。我们看到Icon 项,这里可以更改“新 建”菜单的图标。 6.我们点击后面的...号,进入资源选择器,但现在这里面是空的。所以下面我 们需要给该工程添加外部资源。 7.添加资源有两...

    JQuery&CSS;&CSS;+DIV实例大全.rar

    20.jQuery大气banner带时间线自动播放的焦点图轮番切换代码 21.jquery定时自动切换banner广告图片动画插件示例 22.jquery实现LightBox图片点击放大效果的图片盒子插件 23.jQuery实现slider图片滚动,单个滚动...

    editor:出色的网页设计工具

    截屏特征支持元素直角圆圈文本图像立方体圆筒SVG路径带路径的SVG Rect SVG圆与路径SVG文字SVG文字路径风格结盟位置尺寸箱型转换支持转换ui(旋转X,Y,Z) 许多样式工具背景字体和文字样式渐变(多个背景图像) 边界...

    Visual C++ 编程资源大全(英文源码 图形)

    Line Class 一个简单的虚线类(4KB)&lt;END&gt;&lt;br&gt;47,47.zip Drawing Dashed Lines and Curves 画虚的直线和曲线(9KB)&lt;END&gt;&lt;br&gt;48,48.zip Drawing dotted lines 画边界线(5KB)&lt;END&gt;&lt;br&gt;49,49.zip How to...

Global site tag (gtag.js) - Google Analytics