static void addRoundedRectToPath(CGContextRef context, CGRect rect, float ovalWidth, float ovalHeight) {
float fw, fh;
if (ovalWidth == 0 || ovalHeight == 0) {
CGContextAddRect(context, rect);
return;
}
CGContextSaveGState(context);
CGContextTranslateCTM (context, CGRectGetMinX(rect), CGRectGetMinY(rect));
CGContextScaleCTM (context, ovalWidth, ovalHeight);
fw = CGRectGetWidth (rect) / ovalWidth;
fh = CGRectGetHeight (rect) / ovalHeight;
CGContextMoveToPoint(context, fw, fh/2);
CGContextAddArcToPoint(context, fw, fh, fw/2, fh, 1);
CGContextAddArcToPoint(context, 0, fh, 0, fh/2, 1);
CGContextAddArcToPoint(context, 0, 0, fw/2, 0, 1);
CGContextAddArcToPoint(context, fw, 0, fw, fh/2, 1);
CGContextClosePath(context);
CGContextRestoreGState(context);
}
static void addGlossPath(CGContextRef context, CGRect rect) {
CGFloat quarterHeight = CGRectGetMidY(rect) / 2;
CGContextSaveGState(context);
CGContextBeginPath(context);
CGContextMoveToPoint(context, -20, 0);
CGContextAddLineToPoint(context, -20, quarterHeight);
CGContextAddQuadCurveToPoint(context, CGRectGetMidX(rect), quarterHeight * 3, CGRectGetMaxX(rect) + 20, quarterHeight);
CGContextAddLineToPoint(context, CGRectGetMaxX(rect) + 20, 0);
CGContextClosePath(context);
CGContextRestoreGState(context);
}
UIImage *applyIconHighlightToImage(UIImage *icon) ;
UIImage *applyIconHighlightToImage(UIImage *icon) {
UIImage *newImage;
CGContextRef context;
CGGradientRef glossGradient;
CGColorSpaceRef rgbColorspace;
CGRect currentBounds = CGRectMake(0, 0, icon.size.width, icon.size.height);
CGPoint topCenter = CGPointMake(CGRectGetMidX(currentBounds), 0.0f);
CGPoint midCenter = CGPointMake(CGRectGetMidX(currentBounds), CGRectGetMidY(currentBounds));
CGFloat locations[2] = {0.0, 1.0};
CGFloat components[8] = {1.0, 1.0, 1.0, 0.75, 1.0, 1.0, 1.0, 0.2};
UIGraphicsBeginImageContext(icon.size);
context = UIGraphicsGetCurrentContext();
UIGraphicsPushContext(context);
addRoundedRectToPath(context, currentBounds, 10, 10);
CGContextClosePath(context);
CGContextClip(context);
[icon drawInRect:currentBounds];
addGlossPath(context, currentBounds);
CGContextClip(context);
rgbColorspace = CGColorSpaceCreateDeviceRGB();
glossGradient = CGGradientCreateWithColorComponents(rgbColorspace, components, locations, 2);
CGContextDrawLinearGradient(context, glossGradient, topCenter, midCenter, 0);
UIGraphicsPopContext();
newImage = UIGraphicsGetImageFromCurrentImageContext();
CGGradientRelease(glossGradient);
CGColorSpaceRelease(rgbColorspace);
UIGraphicsEndImageContext();
return newImage;
}
返回的image是圆角有gloss效果,类似桌面icon.
分享到:
相关推荐
We assess the color appearance of the samples with different inks on glossy substrates, five kinds of paper with different gloss levels. The color samples are measured using spectrophotometers under ...
### Gloss优化命令详解 #### 一、概述 在PCB(Printed Circuit Board,印制电路板)的设计过程中,无论是采用手动布线还是利用SPECCTRA等自动化工具进行自动布线,都可能会出现一些布线不合理的情况,比如布线效果...
"Lipgloss"这一名称可能源于其形象地描绘了字体设计如唇膏般能够赋予文字独特的魅力和个性。本文将深入探讨字体设计的基础知识,以及如何通过“Lipgloss”这样的设计元素创造出引人注目的视觉效果。 一、字体设计...
【标题】"Carbon Gloss 系列图标下载"指的是一个包含Carbon Gloss风格图标的资源集合,这类图标设计通常具有高光效果,展现出精致且现代的视觉风格。Carbon Gloss图标以其独特的光泽和质感,常用于软件、应用程序、...
Chrome 护眼暗黑主题Gloss dark.zip
【Gloss3D:轻量级开源3D图形软件】是一个专为GNU/Linux和Windows操作系统设计的3D建模、动画及渲染工具。这款软件以其轻量化和开源特性,为用户提供了灵活且自由的3D创作环境。GLOSS的源代码采用C语言编写,并基于...
这是一个用引导的项目。 入门 首先,运行开发服务器: npm run dev # or yarn dev 用浏览器打开以查看结果。 您可以通过修改pages/index.js来开始编辑页面。页面在您编辑文件时自动更新。...可以在pages/api/hello.js...
《用Haskell与Gloss构建3D鲁比克立方体模拟器》 在IT领域,游戏开发是一项技术性极强的工作,它不仅涉及到编程语言,还需要掌握图形渲染、交互设计等多个方面。本项目"rubiks"就是这样一个用Haskell语言和Gloss库...
Orb_clay_gloss.ZMT.zmt
Lip Gloss对终端渲染采用一种表达性,声明性的方法。 熟悉CSS的用户将会对Lip Gloss感到宾至如归。 import "github.com/charmbracelet/lipgloss"var style = lipgloss . NewStyle (). Bold ( true ). Foreground ( ...
光泽度原始光泽: Original Gloss 是 Python 的 OpenGL 游戏库,使用 PyGame。 但它缺乏一些功能来制作我的游戏。 所以,我修复了光泽。 Original Gloss 在 LGPLv3 下获得许可。 所以这个固定的 Gloss 是 LGPLv3。...
接下来,我们将深入探讨Sparkling、BlueCurve、Snow和Gloss四个系列的图标设计特点以及其在UI设计中的重要性。 1. Sparkling系列:这个系列的图标通常具有明亮的色彩和动态感,可能包含发光、闪烁的效果,给人一种...
不光泽 查看用法示例要安装,请尝试: >> sudo apt-get install freeglut3-dev libglu1-mesa-dev>> cabal update>> cabal install not-gloss
These are a few of the perks that make Drupal a choice platform for developers who want the power of an established CMS, but the freedom to make it work for them. From social networking to AJAX to e-...
- Choose from more theme options, check out the new icons, and make your settings portable - Step up your workflow with hover colors, auto brace completion, peek, and CodeLens - Code ASP.NET faster ...
- Choose from more theme options, check out the new icons, and make your settings portable - Step up your workflow with hover colors, auto brace completion, peek, and CodeLens - Code ASP.NET faster ...
标题中的"Gloss一个JSON 解析库"指的是一款名为Gloss的软件库,它专门用于解析和序列化JSON数据。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于Web服务和应用程序之间的数据传输。...
在给定的标题"reflex-gloss-scene"中,我们探讨的是一个特定的Haskell项目,它专注于创建具有反射光泽效果的图形场景。这个项目利用了Reflex库和Gloss库,它们都是Haskell生态系统中的重要工具。 Reflex库是一个...
本资源包含四个不同风格的精美图标系列:Sparkling、BlueCurve、Snow和Gloss,这些都可能用于网页设计、移动应用开发、桌面主题美化等多个领域。 首先,Sparkling系列的图标以其独特的光泽和动态感吸引眼球。这种...
本文将深入探讨如何仅通过代码实现iOS按钮的Gloss Caustic Shader效果,即颜色的渐变和抛光效果,而无需加载额外的图片资源。这种技术可以提升应用程序的性能,因为它减少了对图片资源的依赖。 首先,我们要了解iOS...