IOS Quartz 各种绘制图形用法---实现画图片、写文字、画线、椭圆、矩形、棱形等

转自:http://blog.csdn.net/zhibudefeng/article/details/8463268

[cpp] view plain copy

  1. // Only override drawRect: if you perform custom drawing.
  2. // An empty implementation adversely affects performance during animation.
  3. - (void)drawRect:(CGRect)rect
  4. {
  5. CGContextRef context = UIGraphicsGetCurrentContext();
  6. /*NO.1画一条线
  7. CGContextSetRGBStrokeColor(context, 0.5, 0.5, 0.5, 0.5);//线条颜色
  8. CGContextMoveToPoint(context, 20, 20);
  9. CGContextAddLineToPoint(context, 200,20);
  10. CGContextStrokePath(context);
  11. */
  12. /*NO.2写文字
  13. CGContextSetLineWidth(context, 1.0);
  14. CGContextSetRGBFillColor (context, 0.5, 0.5, 0.5, 0.5);
  15. UIFont  *font = [UIFont boldSystemFontOfSize:18.0];
  16. [@"公司:北京中软科技股份有限公司\n部门:ERP事业部\n姓名:McLiang" drawInRect:CGRectMake(20, 40, 280, 300) withFont:font];
  17. */
  18. /*NO.3画一个正方形图形 没有边框
  19. CGContextSetRGBFillColor(context, 0, 0.25, 0, 0.5);
  20. CGContextFillRect(context, CGRectMake(2, 2, 270, 270));
  21. CGContextStrokePath(context);
  22. */
  23. /*NO.4画正方形边框
  24. CGContextSetRGBStrokeColor(context, 0.5, 0.5, 0.5, 0.5);//线条颜色
  25. CGContextSetLineWidth(context, 2.0);
  26. CGContextAddRect(context, CGRectMake(2, 2, 270, 270));
  27. CGContextStrokePath(context);
  28. */
  29. /*NO.5画方形背景颜色
  30. CGContextTranslateCTM(context, 0.0f, self.bounds.size.height);
  31. CGContextScaleCTM(context, 1.0f, -1.0f);
  32. UIGraphicsPushContext(context);
  33. CGContextSetLineWidth(context,320);
  34. CGContextSetRGBStrokeColor(context, 250.0/255, 250.0/255, 210.0/255, 1.0);
  35. CGContextStrokeRect(context, CGRectMake(0, 0, 320, 460));
  36. UIGraphicsPopContext();
  37. */
  38. /*NO.6椭圆
  39. CGRect aRect= CGRectMake(80, 80, 160, 100);
  40. CGContextSetRGBStrokeColor(context, 0.6, 0.9, 0, 1.0);
  41. CGContextSetLineWidth(context, 3.0);
  42. CGContextAddEllipseInRect(context, aRect); //椭圆
  43. CGContextDrawPath(context, kCGPathStroke);
  44. */
  45. /*NO.7
  46. CGContextBeginPath(context);
  47. CGContextSetRGBStrokeColor(context, 0, 0, 1, 1);
  48. CGContextMoveToPoint(context, 100, 100);
  49. CGContextAddArcToPoint(context, 50, 100, 50, 150, 50);
  50. CGContextStrokePath(context);
  51. */
  52. /*NO.8渐变
  53. CGContextClip(context);
  54. CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB();
  55. CGFloat colors[] =
  56. {
  57. 204.0 / 255.0, 224.0 / 255.0, 244.0 / 255.0, 1.00,
  58. 29.0 / 255.0, 156.0 / 255.0, 215.0 / 255.0, 1.00,
  59. 0.0 / 255.0,  50.0 / 255.0, 126.0 / 255.0, 1.00,
  60. };
  61. CGGradientRef gradient = CGGradientCreateWithColorComponents
  62. (rgb, colors, NULL, sizeof(colors)/(sizeof(colors[0])*4));
  63. CGColorSpaceRelease(rgb);
  64. CGContextDrawLinearGradient(context, gradient,CGPointMake
  65. (0.0,0.0) ,CGPointMake(0.0,self.frame.size.height),
  66. kCGGradientDrawsBeforeStartLocation);
  67. */
  68. /* NO.9四条线画一个正方形
  69. //画线
  70. UIColor *aColor = [UIColor colorWithRed:0 green:1.0 blue:0 alpha:0];
  71. CGContextSetRGBStrokeColor(context, 1.0, 0, 0, 1.0);
  72. CGContextSetFillColorWithColor(context, aColor.CGColor);
  73. CGContextSetLineWidth(context, 4.0);
  74. CGPoint aPoints[5];
  75. aPoints[0] =CGPointMake(60, 60);
  76. aPoints[1] =CGPointMake(260, 60);
  77. aPoints[2] =CGPointMake(260, 300);
  78. aPoints[3] =CGPointMake(60, 300);
  79. aPoints[4] =CGPointMake(60, 60);
  80. CGContextAddLines(context, aPoints, 5);
  81. CGContextDrawPath(context, kCGPathStroke); //开始画线
  82. */
  83. /*  NO.10
  84. UIColor *aColor = [UIColor colorWithRed:0 green:1.0 blue:0 alpha:0];
  85. CGContextSetRGBStrokeColor(context, 1.0, 0, 0, 1.0);
  86. CGContextSetFillColorWithColor(context, aColor.CGColor);
  87. //椭圆
  88. CGRect aRect= CGRectMake(80, 80, 160, 100);
  89. CGContextSetRGBStrokeColor(context, 0.6, 0.9, 0, 1.0);
  90. CGContextSetLineWidth(context, 3.0);
  91. CGContextSetFillColorWithColor(context, aColor.CGColor);
  92. CGContextAddRect(context, rect); //矩形
  93. CGContextAddEllipseInRect(context, aRect); //椭圆
  94. CGContextDrawPath(context, kCGPathStroke);
  95. */
  96. /*  NO.11
  97. 画一个实心的圆
  98. CGContextFillEllipseInRect(context, CGRectMake(95, 95, 100.0, 100));
  99. */
  100. /*NO.12
  101. 画一个菱形
  102. CGContextSetLineWidth(context, 2.0);
  103. CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);
  104. CGContextMoveToPoint(context, 100, 100);
  105. CGContextAddLineToPoint(context, 150, 150);
  106. CGContextAddLineToPoint(context, 100, 200);
  107. CGContextAddLineToPoint(context, 50, 150);
  108. CGContextAddLineToPoint(context, 100, 100);
  109. CGContextStrokePath(context);
  110. */
  111. /*NO.13 画矩形
  112. CGContextSetLineWidth(context, 2.0);
  113. CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);
  114. CGRect rectangle = CGRectMake(60,170,200,80);
  115. CGContextAddRect(context, rectangle);
  116. CGContextStrokePath(context);
  117. */
  118. /*椭圆
  119. CGContextSetLineWidth(context, 2.0);
  120. CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);
  121. CGRect rectangle = CGRectMake(60,170,200,80);
  122. CGContextAddEllipseInRect(context, rectangle);
  123. CGContextStrokePath(context);
  124. */
  125. /*用红色填充了一段路径:
  126. CGContextMoveToPoint(context, 100, 100);
  127. CGContextAddLineToPoint(context, 150, 150);
  128. CGContextAddLineToPoint(context, 100, 200);
  129. CGContextAddLineToPoint(context, 50, 150);
  130. CGContextAddLineToPoint(context, 100, 100);
  131. CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);
  132. CGContextFillPath(context);
  133. */
  134. /*填充一个蓝色边的红色矩形
  135. CGContextSetLineWidth(context, 2.0);
  136. CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);
  137. CGRect rectangle = CGRectMake(60,170,200,80);
  138. CGContextAddRect(context, rectangle);
  139. CGContextStrokePath(context);
  140. CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);
  141. CGContextFillRect(context, rectangle);
  142. */
  143. /*画弧
  144. //弧线的是通过指定两个切点,还有角度,调用CGContextAddArcToPoint()绘制
  145. CGContextSetLineWidth(context, 2.0);
  146. CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);
  147. CGContextMoveToPoint(context, 100, 100);
  148. CGContextAddArcToPoint(context, 100,200, 300,200, 100);
  149. CGContextStrokePath(context);
  150. */
  151. /*
  152. 绘制贝兹曲线
  153. //贝兹曲线是通过移动一个起始点,然后通过两个控制点,还有一个中止点,调用CGContextAddCurveToPoint() 函数绘制
  154. CGContextSetLineWidth(context, 2.0);
  155. CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);
  156. CGContextMoveToPoint(context, 10, 10);
  157. CGContextAddCurveToPoint(context, 0, 50, 300, 250, 300, 400);
  158. CGContextStrokePath(context);
  159. */
  160. /*绘制二次贝兹曲线
  161. CGContextSetLineWidth(context, 2.0);
  162. CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);
  163. CGContextMoveToPoint(context, 10, 200);
  164. CGContextAddQuadCurveToPoint(context, 150, 10, 300, 200);
  165. CGContextStrokePath(context);
  166. */
  167. /*绘制虚线
  168. CGContextSetLineWidth(context, 5.0);
  169. CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);
  170. CGFloat dashArray[] = {2,6,4,2};
  171. CGContextSetLineDash(context, 3, dashArray, 4);//跳过3个再画虚线,所以刚开始有6-(3-2)=5个虚点
  172. CGContextMoveToPoint(context, 10, 200);
  173. CGContextAddQuadCurveToPoint(context, 150, 10, 300, 200);
  174. CGContextStrokePath(context);
  175. */
  176. /*绘制图片
  177. NSString* imagePath = [[NSBundle mainBundle] pathForResource:@"dog" ofType:@"png"];
  178. UIImage* myImageObj = [[UIImage alloc] initWithContentsOfFile:imagePath];
  179. //[myImageObj drawAtPoint:CGPointMake(0, 0)];
  180. [myImageObj drawInRect:CGRectMake(0, 0, 320, 480)];
  181. NSString *s = @"我的小狗";
  182. [s drawAtPoint:CGPointMake(100, 0) withFont:[UIFont systemFontOfSize:34.0]];
  183. */
  184. /*
  185. NSString *path = [[NSBundle mainBundle] pathForResource:@"dog" ofType:@"png"];
  186. UIImage *img = [UIImage imageWithContentsOfFile:path];
  187. CGImageRef image = img.CGImage;
  188. CGContextSaveGState(context);
  189. CGRect touchRect = CGRectMake(0, 0, img.size.width, img.size.height);
  190. CGContextDrawImage(context, touchRect, image);
  191. CGContextRestoreGState(context);
  192. */
  193. /*NSString *path = [[NSBundle mainBundle] pathForResource:@"dog" ofType:@"png"];
  194. UIImage *img = [UIImage imageWithContentsOfFile:path];
  195. CGImageRef image = img.CGImage;
  196. CGContextSaveGState(context);
  197. CGContextRotateCTM(context, M_PI);
  198. CGContextTranslateCTM(context, -img.size.width, -img.size.height);
  199. CGRect touchRect = CGRectMake(0, 0, img.size.width, img.size.height);
  200. CGContextDrawImage(context, touchRect, image);
  201. CGContextRestoreGState(context);*/
  202. /*
  203. NSString *path = [[NSBundle mainBundle] pathForResource:@"dog" ofType:@"png"];
  204. UIImage *img = [UIImage imageWithContentsOfFile:path];
  205. CGImageRef image = img.CGImage;
  206. CGContextSaveGState(context);
  207. CGAffineTransform myAffine = CGAffineTransformMakeRotation(M_PI);
  208. myAffine = CGAffineTransformTranslate(myAffine, -img.size.width, -img.size.height);
  209. CGContextConcatCTM(context, myAffine);
  210. CGContextRotateCTM(context, M_PI);
  211. CGContextTranslateCTM(context, -img.size.width, -img.size.height);
  212. CGRect touchRect = CGRectMake(0, 0, img.size.width, img.size.height);
  213. CGContextDrawImage(context, touchRect, image);
  214. CGContextRestoreGState(context);
  215. */
  216. }
时间: 2025-01-02 11:20:50

IOS Quartz 各种绘制图形用法---实现画图片、写文字、画线、椭圆、矩形、棱形等的相关文章

【转】IOS Quartz 各种绘制图形用法-实现画图片、写文字、画线、椭圆、矩形、棱形等

// Only override drawRect: if you perform custom drawing.// An empty implementation adversely affects performance during animation.- (void)drawRect:(CGRect)rect{ CGContextRef context = UIGraphicsGetCurrentContext(); /*NO.1画一条线 CGContextSetRGBStrokeCo

Quartz 各种绘制图形用法---实现画图片、写文字、画线、椭圆、矩形、棱形等

// Only override drawRect: if you perform custom drawing.// An empty implementation adversely affects performance during animation.- (void)drawRect:(CGRect)rect{    CGContextRef context = UIGraphicsGetCurrentContext();         /*NO.1画一条线     CGContex

iOS Quartz2D绘制线、矩形、弧、圆、文字、图片

利用Quartz2D中提供的图层上下文 Layer Graphics Context,进行简单绘制线.矩形.弧.圆.文字.图片 在storyBoard中得拖入控制器,添加多个UIView控件,并把各个UIView的class修改为自定义的类. 如: 绘制线: // // HJLineView.m // 画线三角矩形圆 // // Created by HJiang on 15/1/2. // Copyright (c) 2015年 HJiang. All rights reserved. //

iOS开发UI篇——Core Animation核心动画CAShapeLayer(绘制图形等)简介

重点: 获取绘制图形        Layer CAShapeLayer *shapeLayer = [CAShapeLayer layer];     设置图形有线颜色   [CAShapeLayer layer].strokeColor = [UIColor redColor].CGColor;      设置图形填充颜色   [CAShapeLayer layer].fillColor = [UIColor clearColor].CGColor;   设置图形线宽      [CASha

IOS 开发:绘制像素到屏幕

像素是如何绘制到屏幕上面的?把数据输出到屏幕的方法有很多,通过调用很多不同的framework和不同的函数.这里我们讲一下这个过程背后的东西.希望能够帮助大家了解什么时候该使用什么API,特别是当遇到性能问题需要调试的时候.当然,我们这里主要讲iOS,但是事实上,很多东西也是可以应用到OSX上面的. Graphics Stack 绘制屏幕的过程中又很多都是不被人了解的.但是一旦像素被绘制到屏幕上面,那么像素就是有3种颜色组成:红绿蓝.这3个颜色单元通过特定的强弱组合形成一个特定的颜色.对于iPh

HTML5使用Canvas来绘制图形

一.Canvas标签: 1.HTML5<canvas>元素用于图形的绘制,通过脚本(通常是javascript)来完成. 2.<canvas>标签只是图形容器,必须使用脚本来绘制图形. 3.可以通过多种方法通过Canvas绘制路径.盒.圆.字符以及添加图像. 二.Canvas绘制图形 1.绘制矩形 2.绘制圆形 3.moveTo和lineTo 4.使用bezierCurveTo绘制贝塞尔曲线 5.绘制线性渐变 6.绘制径向渐变 7.绘制变形图形 8.绘制图形合成gloablComp

【UWP通用应用开发】编辑文本、绘制图形、3D透视效果及绘制时钟实战

编辑文本及键盘输入 相信大家都会使用TextBox,但如果要让文本在TextBox中换行该怎么做呢?将TextWrapping属性设置为Wrap,将AcceptsReturn属性设置为True就好咯. PasswordBox很明显就是一个密码框了,和其他的控件相比其有2个特殊之处,一个是其可以用MaxLength来控制最大的长度,一个是用PasswordChanged来捕捉密码的改名.显然比如QQ密码的MaxLength就是16位了,而PasswordChanged可以用来监测比如用户设置的密码

Windows App开发之编辑文本与绘制图形

编辑文本及键盘输入 相信大家都会使用TextBox,但如果要让文本在TextBox中换行该怎么做呢?将TextWrapping属性设置为Wrap,将AcceptsReturn属性设置为True就好咯. PasswordBox很明显就是一个密码框了,和其他的控件相比其有2个特殊之处,一个是其可以用MaxLength来控制最大的长度,一个是用PasswordChanged来捕捉密码的改名.显然比如QQ密码的MaxLength就是16位了,而PasswordChanged可以用来监测比如用户设置的密码

【Win 10 应用开发】UI Composition 札记(四):绘制图形

使用 Win 2D 组件,就可以很轻松地绘制各种图形,哪怕你没有 D2D 相关基础,也不必写很复杂的 C++ 代码. 先来说说如何获取 Win 2D 组件.很简单,创建 UWP 应用项目后,你打开“解决方案资源管理器”窗口,然后在[引用]节点上右击,从快捷菜单中选择[管理 Nuget 程序包]命令,在打开的窗口中搜索“Win 2D”,然后安装带有 uwp 标识的那个就可以了. 顺便说一下,nuget 的包缓存在你的用户文件夹下,就是系统盘下的 \users\xxx,xxx是你登录系统的用户名,在