Quartz2D-绘图

欧阳俊晖
2023-12-01

Quartz2D是C语言的一个绘图引擎。

首先应该了解一个概念什么是图形上下文?

图形上下文是保存绘图信息与绘图状态的C语言数据类型。

绘图步骤:

继承UIView---->在drawRect方法中获取上下文绘制图形----->输出显示(可以显示在PDF,layer,window,printor,Bitmap上)

-----------------------------获取图形上下文(最重要的一步)--------------------------------


CGContextRef  context = UIGraphicsGetCurrentContext();//获取图形上下文


---------------------------在绘制前设置颜色、线段等基本状态-------------------------


CGContextSetRGBStrokeColor(context,1,1,1,0.6);  //设置颜色(参数说明:1分别代表红黄蓝,0.6表示透明度)

CGContextSetLineWidth(context,13); //设置线段宽度

CGContextSetLineCap(context,kCGLineCapRound); //设置线段头尾样式(一共有三种样式-自己点进去查看 )

CGContextSetLineJoin(context,kCGLineJoinRound); //设置线段折叠样式(一共有三种样式-自己点进去查看)


----------------------------绘制一条线段-------------------------


CGContextMoveToPoint(context,10,10); //绘制第一个点

CGContextAddLineToPoint(context,10,10); //描绘连接第二个点

CGContextStrokePath(context); //空心渲染


----------------------------画三角形---------------------------


CGContextMoveToPoint(context,10,10); //绘制一个点

CGContextAddLineToPoint(context,20,20); //连接第二个点

CGContextAddLineToPoint(context,30,10); //连接第三个点

CGContextClosePath(context); //关闭路径(不需要在写第四个点)

CGContextStrokePath(context); //空心渲染

CGContextFillPath(context); //实心渲染


-----------------------------绘制一个矩形-------------------------


CGContextAddRect(context, CGRectMake(10,10,10,10));

CGContextStrokePath(context); //空心渲染

CGContextFillPath(context); // 实心渲染(除线段之外的所有图像都可以实心渲染)


-----------------------------绘制椭圆与圆形-------------------------


CGContextAddEllipseInRect(context, CGRectMake(0,0,50,50));//这是一个画椭圆的方法,但是椭圆宽高一样的时候就成了园

CGContextStrokePath(context); //空心渲染

CGContextFillPath(context); //实心渲染


---------------------------绘制圆弧----------------------------------

画圆弧顺时针的时候X 正半轴开始旋转:0,1/2π,π,3/2π  逆时针的时候X正半轴开始旋转:0,-1/2π,π,-3/2π

CGContextAddArc(conntext, x, y, 半径, 起始角度, 结束角度, 顺时针(0表示)还是逆时针(1标识)旋转);

CGContextStrokePath(context); //空心渲染

CGContextFilPath(context); //实心渲染


---------------------------画文字-----------------------------------

NSString *text = @“Quartz2D挺简单的”;

NSDictionary *attr = @{NSFontAttributName:[NSFontSystem FontOfSize:13], NSForegroundColorAttributeName:[UIColor yellowColor]}; //字体大小,文字颜色

[text drawAtPoint:CGPoint(10,10) withAttributs:attr]; //画文字,只标注了点,文字不会自动换行

[text drawInRect:CGRectMake(0.0.20,20) withAttributs:attr]; //此方法,文字会自动换行


---------------------------画图片------------------------------

UIImage *image = [UIImage imageWithName:@""];

[image drawInRect:rect ];

[image drawAsPatterInRect:rect]; //平铺绘画



 类似资料: