BezierCode 工具使用

news/2024/7/7 15:26:37

概要   

       今天无意间看到一个视频,发现了一款绘画Bezier 图形绘制并自动生成OC代码的神器, 因此马上先记录下。

  之前一直很纠结如果程序员自己去绘制图片,久那么使用bezier 自己去画吗? 答案是:其实这样很不现实的。

  点击下载地址

制作Bezier图片

生成的代码如下:

CGContextRef context = UIGraphicsGetCurrentContext();
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();


 Polygon drawing
UIBezierPath *polygon = [UIBezierPath bezierPath];
[polygon moveToPoint:CGPointMake(99.098, -3.031)];
[polygon addLineToPoint:CGPointMake(0, 53.588)];
[polygon addLineToPoint:CGPointMake(0, 166.826)];
[polygon addLineToPoint:CGPointMake(99.098, 223.445)];
[polygon addLineToPoint:CGPointMake(198.195, 166.826)];
[polygon addLineToPoint:CGPointMake(198.195, 53.588)];
[polygon closePath];


//Polygon gradient declaration
NSArray *polygonGradientColors = @[(id)[UIColor colorWithRed:0.131 green: 1 blue:0.0236 alpha:1].CGColor,
	(id)[UIColor colorWithRed:1 green: 1 blue:1 alpha:1].CGColor];
CGFloat polygonGradientLocations[] = {0.00,1.00};
CGGradientRef polygonGradient = CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef)polygonGradientColors, polygonGradientLocations);

//Polygon gradient drawing
CGContextSaveGState(context);
{
	[polygon addClip];
	CGContextDrawLinearGradient(context, polygonGradient, 
		CGPointMake(22.016, 41.656), 
		CGPointMake(195.375, 166.336), 
		kCGGradientDrawsBeforeStartLocation | kCGGradientDrawsAfterEndLocation);
}
CGContextRestoreGState(context);

[[UIColor colorWithRed:0.329 green: 0.329 blue:0.329 alpha:1] setStroke];
polygon.lineWidth = 1;
[polygon stroke];

 Text drawing
NSString* text = @"Hello World!"; 

CGRect textRect = CGRectMake(32.281, 72.992, 133.633, 74.43);
NSMutableParagraphStyle* textStyle = [[NSMutableParagraphStyle defaultParagraphStyle] mutableCopy];
[textStyle setAlignment:NSTextAlignmentCenter];
NSDictionary* textFontAttribute = @{NSFontAttributeName: [UIFont fontWithName:@"Helvetica" size:24],
	 NSForegroundColorAttributeName: [UIColor blackColor],
	 NSParagraphStyleAttributeName: textStyle};

// Text drawn into textImage to be used as mask
UIGraphicsBeginImageContextWithOptions(textRect.size, NO, 0);
CGContextRef textImageContext = UIGraphicsGetCurrentContext();;

CGContextSaveGState(textImageContext);
CGRect textImageContextRect = CGRectMake(0, 0, 133.633, 74.43);
[text drawInRect:textImageContextRect withAttributes:textFontAttribute];
CGContextRestoreGState(textImageContext);

CGImageRef textImageCG = CGBitmapContextCreateImage(textImageContext);
UIGraphicsEndImageContext();

// Text gradient drawing
CGContextSaveGState(context);
{
	CGContextTranslateCTM(context, 0, 2*CGRectGetMinY(textRect) + CGRectGetHeight(textRect));
	CGContextScaleCTM(context, 1.0, -1.0);
	CGContextClipToMask(context, textRect, textImageCG);
	
	NSArray *gradientColors = @[(id)[UIColor blackColor].CGColor,
		(id)[UIColor whiteColor].CGColor];
	CGFloat gradientLocations[] = {0.00,1.00};
	CGGradientRef textgradient = CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef)gradientColors, gradientLocations);
	CGContextDrawLinearGradient(context, textgradient, 
		CGPointMake(99.098, 147.422), 
		CGPointMake(117.562, 110.574), 
		kCGGradientDrawsBeforeStartLocation | kCGGradientDrawsAfterEndLocation);
}
CGContextRestoreGState(context);

 

然后自己自定义个View 把这段代码放在 

KBBezierView.m
- (void)drawRect:(CGRect)rect { //上面代码写入 }

 

完美收工。。。。以后可以画自己很多的绘画了

 

转载于:https://www.cnblogs.com/kingbo/p/11099726.html


http://www.niftyadmin.cn/n/1412861.html

相关文章

elasticsearch7.7安装部署

这里只搭建了一个节点,提供给测试环境使用,暂未考虑ES集群扩容和优化。 ES 7.0 是 2019 年 4 月份发布的,底层是 Lucene 8.0。其他重要特性有: 废除单个索引下多 Type 的支持 ES Security 免费使用 ECK - ES Operator on K8s 新功…

整合梅花雨日历控件,推出.NET版本

转 http://www.cnblogs.com/PiedPiper/archive/2007/01/10/617004.html 喜欢梅花雨的日历控件,利用周末时间整合了该控件。主要功能如下:1.将该控件整合为.NET版本,做成服务器控件; 2.可以设计时显示输入文本框,并可以…

你了解Beyond Compare日志面板嘛

系统日志是记录系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件。用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。系统日志包括系统日志、应用程序日志和安全日志。Beyond Compare软件是一款专业级别的文件…

windows下使用cmd命令杀死进程

tasklist 使用以上命令显示当前进程,及其PID等,如图所示 找到我要删除的进程的pid(好像有点费劲?) 出现以下提示 原因:没有管理员权限,使用管理员模式打开 在Windows菜单栏中找到命令提示符-->右键-->以管理员身…

SkyWalking7.0安装部署

1. 安装 8.0版本的UI 改为自定义查询语句,需要配置定制化图表,所以暂时使用7.0版本。 8.x版本后会增加kafka数据传输特性,可以解决异地机房部署问题,目前2020-06暂未发布。 elasticsearch 安装参考:https://blog.csdn.…

栈(没写完)

typedef struct stacknode {elementype data;struct stacknode *next; }stacknode; typedef struct {stacknode *top;//栈顶指针 }LinkStack; 转载于:https://www.cnblogs.com/claudia529/p/11104634.html

UCS 中KVM Console无法远程主机问题

登录UCSM管理器,访问Server,想要通过KVM Console来远程服务器时,出现如下错误提示:解决方法:这是由于安装了不正确的JAVA版本导致的,正确的JAVA安装版本应该是Java Runtime Environment-6.0.450 版本&#…

ASP.NET用Jmail实现邮件群发

1.安装jmail4.3 2.找到jmail.dll(Program Files/Dimac/w3JMail4下)3.执行Program Files/Microsoft Visual Studio .NET/FrameworkSDK/Bin/ildasm.exe(可使用Visual Studio .Net 2003 命令提示),格式如下:tlbimp c:/Program Files/…