代码如下:
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
分享到:
相关推荐
铅笔工具则可以画出平直、平滑或墨水模式的线条;钢笔工具用于绘制连续的曲线,可以随时调整;椭圆和矩形工具结合Shift键可以绘制完美的圆形和正方形;笔刷工具则用于填充颜色;渐变工具则可以改变对象颜色的渐变...
此外,还可以加入一些额外的视觉效果,如模糊、渐变或透明度变化。例如,可以使用`ctx.shadowBlur`设置阴影模糊半径,`ctx.shadowColor`设置阴影颜色,以及`ctx.globalAlpha`调整整个画布的透明度。 在实现动画时,...
在“Flash绘图基础元件帧逐帧动画渐变动画造型设计(1)完整版资料.ppt”中,主要涵盖了以下几个核心知识点: 1. **Flash绘图基础**: Flash的基础在于它的绘图工具,包括箭头工具、精选工具、套索工具等。这些工具...
JavaScript是一种解释型、面向对象、弱类型的脚本语言,主要用于网页和浏览器的交互。它可以在客户端运行,无需服务器支持,这大大提高了网页的响应速度和用户体验。 在实现这个特效时,开发者可能使用了以下...
在儿童友好型的网站中,平滑的滚动可以简化操作流程,让小朋友们更容易理解和使用。 最后,压缩包中的“readme.md”文件通常是提供关于模板使用、安装或修改指南的文档,对于初次接触此模板的开发者来说非常有帮助...
`react-native-linear-gradient`还支持其他一些高级特性,比如自定义角度、渐变的方向(垂直、水平、对角线等)、渐变的位置以及添加渐变停止点等。这些都可以通过调整属性值来实现。 在实际开发中,结合响应式布局...
5. **性能优化**:考虑到移动设备的资源限制,应避免在主线程中执行计算密集型任务。可以利用缓存策略,如Android的`BitmapShader`,或iOS的`CALayer`的缓存机制,减少不必要的重绘。 6. **兼容性测试**:确保设计...
在PPT模板中,这种风格通常表现为线条简洁、颜色对比鲜明的设计,常伴有蓝色和紫色调,以及流线型的图形元素,给人一种未来感和科技感。 模板中的“CONTENTS”部分是整个演示文稿的框架,用于列出演讲的主要章节或...
本文将详细解析"纯CSS3超时尚Tabs选项卡流线型标签效果"这一主题,以及如何利用CSS3技术实现这种效果。 首先,让我们了解什么是**CSS3**。CSS(层叠样式表)是用于描述HTML或XML(包括如SVG、MathML等各种XML方言)...
避免过度渲染和内存占用,可以使用懒加载策略,只在图片即将进入视口时加载,或者利用Web Worker进行计算密集型任务,避免阻塞主线程。 综上所述,"幻灯片图片渐变效果"是现代网页设计中提升用户体验的重要工具,...
1. **线条绘制**:使用`beginPath()`开始一条路径,然后用`moveTo()`移动到起始点,接着用`lineTo()`添加一系列的线段。流动效果可能是通过不断地修改线条的终点位置,或者改变线条的路径来实现的。 2. **颜色与...
在IT行业中,加载动画是一...例如,可以使用渐变色线条、虚线、点状线等形式,甚至结合动画图标,使加载过程更具趣味性和品牌特色。同时,开发者应始终关注代码的可维护性和可扩展性,以便在未来的需求变更中灵活应对。
3. 复用和释放资源:由于`Graphics`对象和画刷都是资源密集型的,因此在完成使用后,应调用`Dispose`方法释放它们。 总的来说,`LinearGradientBrush`是C#中一个强大的绘图工具,通过巧妙地利用它可以为应用程序...
13. **分隔线导航条**:通过边框或伪元素添加分隔线,增加层次感。 14. **带下拉搜索框的导航条**:整合搜索功能,方便用户快速查找信息。 15. **带有徽标的导航条**:将品牌标志融入导航条,提升品牌识别度。 16...
7. **性能优化**:由于Canvas绘图是实时计算的,源码可能会包含一些性能优化技巧,例如缓存不常变化的数据,减少不必要的重绘,或者使用Web Workers在后台线程处理计算密集型任务。 了解这些核心概念后,你可以深入...
在绘制汽车外形等流线型图形时特别有用。 4. **矩形工具**:矩形工具用于绘制矩形和正方形,其属性面板允许调整填充色、边框色以及圆角半径。通过巧妙运用,可以创造出各种场景背景和图形元素。 5. **刷子工具**:...
在本压缩包“SpecialFX.zip”中,包含的是一个基于C#编程语言的特殊图形效果实现,特别是关于“画变幻线”的技术。这些特效主要用于视觉表现,如模拟水纹、火焰和熔浆等动态效果,为游戏开发、界面设计或者可视化...
图像处理是一个内存密集型的操作,尤其是创建较大尺寸的图像时,可能迅速消耗服务器的内存资源。在生产环境中,如果处理不当,可能会导致服务器资源耗尽,影响网站的可用性和性能。因此,在开发过程中,需要合理控制...
物体表面被划分为明显的亮部和暗部,通过明确的明暗分界线来表达光影变化。 3. **阴影**:阴影部分也是日式动画风格的重要组成部分,它由背光区域和遮挡物投影构成,进一步增强了画面的空间感和层次感。 4. **人物...
而GDI+是在GDI的基础上发展起来的一个增强型图形库,支持更多的图形绘制效果,如渐变、旋转、透明度等。 标题“MFC_GDI及GDI+_CButton重绘”意味着我们将讨论如何在MFC框架下,使用GDI和GDI+来自定义CButton控件的...