捕捉屏幕截图
CALayer实例使用Core Graphics的renderInContext方法可以将视图绘制到图像上下文中以便转化为其他UIImage实例。前提先#import
+ (UIImage *) imageFromView: (UIView *)theView {
// draw a view's contents into an image context
UIGraphicsBeginImageContext(theView.frame.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[theView.layer renderInContext:context];
UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return theImage;
}
注:UIGraphicsBeginImageContext(CGSize size)创建一个基于位图的上下文(context),并将其设置为当前上下文。函数功能与UIGraphicsBeginImageContextWithOptions相同,相当于该方法的opaque参数为NO,scale因子为1.0。而UIGraphicsEndImageContext()方法是移除栈顶的基于当前位图的图形上下文。
视图添加倒影效果
const CGFloat kReflectPercent = -0.25f;
const CGFloat kReflectOpacity = 0.3f;
const CGFloat kReflectDistance = 10.0f;
+ (void)addSimpleReflectionToView:(UIView *)theView
{
CALayer *reflectionLayer = [CALayer layer];
reflectionLayer.contents = [theView layer].contents;
reflectionLayer.opacity = kReflectOpacity;
reflectionLayer.frame = CGRectMake(0.0f,0.0f,theView.frame.size.width,theView.frame.size.height*kReflectPercent); //倒影层框架设置,其中高度是原视图的百分比
CATransform3D stransform = CATransform3DMakeScale(1.0f,-1.0f,1.0f);
CATransform3D transform = CATransform3DTranslate(stransform,0.0f,-(kReflectDistance + theView.frame.size.height),0.0f);
reflectionLayer.transform = transform;
reflectionLayer.sublayerTransform = reflectionLayer.transform;
[[theView layer] addSublayer:reflectionLayer];
}
另一:使用Core Graphics创建倒影
+ (CGImageRef) createGradientImage:(CGSize)size
{
CGFloat colors[] = {0.0,1.0,1.0,1.0};
//在灰色设备色彩上建立一渐变
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();
CGContextRef context = CGBitmapContextCreate(nil,size.width,size.height,8,0,colorSpace,kCGImageAlphaNone);
CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace,colors,NULL,2);
CGColorSpaceRelease(colorSpace);
//绘制线性渐变
CGPoint p1 = CGPointZero;
CGPoint p2 = CGPointMake(0,size.height);
CGContextDrawLinearGradient(context,gradient,p1,p2,kCGGradientDrawsAfterEndLocation);
//Return the CGImage
CGImageRef theCGImage = CGBitmapContextCreateImage(context);
CFRelease(gradient);
CGContextRelease(context);
return theCGImage;
}
//Create a shrunken frame for the reflection
+ (UIImage *) reflectionOfView:(UIView *)theView WithPercent:(CGFloat) percent
{
//Retain the width but shrink the height
CGSize size = CGSizeMake(theView.frame.size.width, theView.frame.size.height * percent);
//Shrink the View
UIGraphicsBeginImageContext(size);
CGContextRef context = UIGraphicsGetCurrentContext();
[theView.layer renderInContext:context];
UIImage *partialimg = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
//build the mask
CGImageRef mask = [ImageHelper createGradientImage:size];
CGImageRef ref = CGImageCreateWithMask(partialimg.CGImage,mask);
UIImage *theImage = [UIImage imageWithCGImage:ref];
CGImageRelease(ref);
CGImageRelease(mask);
return theImage;
}
const CGFloat kReflectDistance = 10.0f;
+ (void) addReflectionToView: (UIView *)theView
{
theView.clipsToBounds = NO;
UIImageView *reflection = [[UIImageView alloc] initWithImage:[ImageHelper reflectionOfView:theView withPercent:0.45f]];
CGRect frame = reflection.frame;
frame.origin = CGPointMake(0.0f, theView.frame.size.height + kReflectDistance);
reflection.frame = frame;
// add the reflection as a simple subview
[theView addSubView:reflection];
[reflection release];
}
实现圆角图片:
UIColor *color = [UIColor colorWithRed:0.95 green:0.95 blue:0.95 alpha:0];
[aImage setBackgroundColor:color]; //设置背景透明
/******设置图片圆角begin*******/
aImage.layer.masksToBounds = YES;
aImage.layer.cornerRadius = 5.0;
aImage.layer.borderWidth = 0.5;
aImage.layer.borderColor = [[UIColor grayColor] CGColor];
/******设置图片圆角end********/
另有方法可见:http://www.4ucode.com/Study/Topic/2058289转载文章。
实现iPhone图标的水晶立体效果
- (void)viewDidLoad {
[super viewDidLoad];
UIGraphicsBeginImageContext(icon.bounds.size);
CGContextRef ctx = UIGraphicsGetCurrentContext();
const CGFloat components[4] = {0.0,0.4,0.0,1.0};
CGContextSetFillColor(ctx, components);
CGContextFillRect(ctx, CGRectMake(0, 0, icon.bounds.size.width, icon.bounds.size.height));
UIImage *background = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImage *image = [UIImage imageNamed:@"icon.png"];
UIImage *mask = [UIImage imageNamed:@"IconBase.png"];
UIImage *roundCorner = [UIImage imageNamed:@"round-corner.png"];
icon.image = image;
CALayer* subLayer = [[CALayer layer] retain];
subLayer.frame = icon.bounds;
subLayer.contents = (id)[background CGImage];
CALayer* maskLayer = [[CALayer layer] retain];
maskLayer.frame = icon.bounds;
maskLayer.contents = (id)[mask CGImage];
[subLayer setMask:maskLayer];
[[icon layer] addSublayer:subLayer];
CALayer* roundCornerLayer = [[CALayer layer] retain];
roundCornerLayer.frame = icon.bounds;
roundCornerLayer.contents = (id)[roundCorner CGImage];
[[icon layer] setMask:roundCornerLayer];
[maskLayer release];
[subLayer release];
[roundCornerLayer release];
}
分享到:
相关推荐
抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图
抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图
最好的抓图软件抓图,绿色抓图,最小的抓图软件!最好的抓图软件抓图,绿色抓图,最小的抓图软件!
小巧的抓图工具小巧的抓图工具小巧的抓图工具小巧的抓图工具小巧的抓图工具
Snap抓图 非常好用的抓图软件,网页抓图,屏幕抓图 可以用命令行来进行抓图,使用非常简单,而且容量非常小
很方便哦……抓图可以抓很多种格式的!很方便哦……抓图可以抓很多种格式的!很方便哦……抓图可以抓很多种格式的!很方便哦……抓图可以抓很多种格式的!很方便哦……抓图可以抓很多种格式的!很方便哦……抓图可以...
实现usb视频抓图,网络摄像头抓图,以及视频采集卡抓图
抓图软件 F9抓图。 抓图软件 F9抓图。 抓图软件 F9抓图。
此分享的是我用了很多年的抓图软件,叫做抓图英雄,软件本身很小,每次工作中文档处理需要截图的时候用这个软件非常方便,可鼠标选取需要截图的区域,可以直接粘贴在office系列软件中,也可以另存为图片格式,兼容xp...
很好用的抓图软件 很好用的抓图软件 很好用的抓图软件 很好用的抓图软件
网页制作辅助工具 抓图软件 抓图工具 最新抓图工具 滚动屏幕抓图工具
红蜻蜓抓图软件(网页抓图、截图工具)方便快捷实用
只有12kb的抓图软件,方便好用。绝对是我见过的最小的抓图软件
抓图工具(非常小但很实用的抓图工具),在项目开发的过程中,可以很快捷方便的抓图,对详细设计人员来说是很值得下载的工具
吴鸿框线抓图.软件帮助大家抓图的好软件,试一试就知道了
FastStone_Capture抓图
无需安装的抓图小软件,使用方便! 无需安装的抓图小软件,使用方便! 无需安装的抓图小软件,使用方便!
windows抓图程序,很好用得的。windows抓图程序,很好用得的。
不用安装的抓图软件-直接启用即可抓图还带快捷健功能。
本demo,基于vs2017开发,采用C#开发语言,实现了onvif协议之抓图功能