`
yangping_Account
  • 浏览: 191726 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

iPhone图形开发绘图小结

 
阅读更多

1、绘图总结:

绘图前设置:

  1. CGContextSetRGBFillColor/CGContextSetFillColorWithColor  //填充色   
  2. CGContextSetRGBStrokeColor/CGContextSetStrokeColorWithColor //笔颜色   
  3. CGContextSetLineWidth   //线宽度  

绘图后设置:

注:  画完图后,必须 先用CGContextStrokePath来描线,即形状,后用CGContextFillPath来填充形状内的颜色.

2.常见图形绘制:

  1. CGContextFillRect/CGContextFillRects   
  2. CGContextFillEllipseInRect   
  3. CGContextAddRect/CGContextAddRects   
  4. CGContextAddEllipseInRect   
  5. CGContextAddLines   
  6. CGContextMoveToPoint   
  7. CGContextAddLineToPoint  

3.常见控制方法:

  1. CGContextSaveGState   
  2. CGContextRestoreGState  

4.创建内存图像context:

  1. CGBitmapContextCreate       <-----CGContextRlease释放   
  2. CGColorSpaceCreateWithName    (KCGColorSpaceGenericRGB)   
  3. CGColorSpaceRlease   
  4. CGBitmapContextCreateImage()   <-----CGImageRlease 释放.   
  5. eg:   
  6. CGContextRefMyCreateBitmapContext(intpixelsWide,intpixelsHigh)   
  7. {   
  8. CGContextRef    context=NULL;   
  9. CGColorSpaceRefcolorSpace;   
  10. void*          bitmapData;   
  11. int             bitmapByteCount;   
  12. int             bitmapBytesPerRow;   
  13. bitmapBytesPerRow   =(pixelsWide*4);   
  14. bitmapByteCount     =(bitmapBytesPerRow*pixelsHigh);   
  15. colorSpace=CGColorSpaceCreateDeviceRGB();   
  16. bitmapData=malloc(bitmapByteCount);   
  17. if(bitmapData==NULL)   
  18. {   
  19. fprintf(stderr,"Memorynotallocated!");   
  20. returnNULL;   
  21. }   
  22. context=CGBitmapContextCreate(bitmapData,   
  23.  pixelsWide,    pixelsHigh,    8,    
  24. bitmapBytesPerRow,    colorSpace,   
  25.  kCGImageAlphaPremultipliedLast);   
  26. if(context==NULL)   
  27. {   
  28. free(bitmapData);   
  29. fprintf(stderr,"Contextnotcreated!");   
  30. returnNULL;   
  31. }   
  32. CGColorSpaceRelease(colorSpace);   
  33. returncontext;   
  34. }  

5.图形的变换:

  1. CGContextTranslateCTM   
  2. CGContextRotateCTM   
  3. CGContextScaleCTM  

6.常用函数:

  1.   CGRectContainsPoint();   
  2. CGRectContainsRect();   
  3. CGRectIntersectsRect();   
  4. CGRectIntersection();   
  5. CGPointEqualToPoint();   
  6. CGSizeEqualToSize();  

7.从原图片中取小图.

  1. CGImageCreateWithImageInRect  

8.屏幕快照:

  1. #import "QuartzCore/QuartzCore.h"   
  2.  
  3. UIGraphicsBeginImageContext(yourView.frame.size);   
  4. [[yourView layer] renderInContext:UIGraphicsGetCurrentContext()];   
  5. UIImage*screenshot =UIGraphicsGetImageFromCurrentImageContext();   
  6. UIGraphicsEndImageContext();   
  7. from:http://www.cppblog.com/zhangyuntaoshe/articles/123066.html  

合并两张bit图到一张image的方法

  1. To graphically merge two images into a new image, you do something like this:   
  2. UIImage *result = nil;   
  3. unsignedchar *data = calloc(1,size.width*size.height*kBytesPerPixel);   
  4. if (data != NULL) {   
  5. // kCGImageAlphaPremultipliedLast 为预记录的#define value   
  6. // 设置context上下文   
  7. CGContextRef context = CGBitmapContextCreate(   
  8. data, size.width, size.height, 8, size.width*kBytesPerPixel,   
  9. CGColorSpaceCreateDeviceRGB(), kCGImageAlphaPremultipliedLast);   
  10. if (context != NULL) {   
  11. UIGraphicsPushContext(context);   
  12. //  Image 为下载的背景图片,用于比较context   
  13. CGContextTranslateCTM(context, 0, size.height);   
  14. CGContextScaleCTM(context, 1, -1);   
  15. [image drawInRect:imageRect];   
  16. [image2 drawInRect:image2Rect];   
  17. UIGraphicsPopContext();   
  18. CGImageRef imageRef = CGBitmapContextCreateImage(context);   
  19. if (imageRef != NULL) {   
  20. result = [UIImageimageWithCGImage:imageRef];   
  21. CGImageRelease(imageRef);   
  22. }   
  23. CGContextRelease(context);   
  24. }   
  25. free(data);   
  26. }   
  27. return result;  

关键方法: 

  1. CGContextRef context = CGBitmapContextCreate();   
  2. CGContextTranslateCTM();   
  3. CGContextScaleCTM();   
  4. CGImageRef imageRef = CGBitmapContextCreateImage(context);   
  5. CGImageRelease(imageRef); 

小结:iPhone图形开发绘图教程的内容介绍完了,希望本文对你有所帮助!

分享到:
评论

相关推荐

    iPhone开发基础教程

    ### iPhone开发基础教程:探索Quartz与OpenGL绘图技术 #### 12.1 图形世界的两个视图 本章节将深入探讨iPhone开发中的两大图形处理技术:Quartz与OpenGL ES。这两种技术各有优势,适用于不同场景下的绘图需求。 #...

    c#绘图源代码

    总结来说,这个压缩包提供了C#图形编程的实践示例,包括静态和动态图形的创建、交互式绘图以及可能的CAD功能。通过研究这些源代码,开发者可以学习到如何使用C#的图形API,如何创建自定义的图形控件,以及如何处理...

    iPhone 开发基础教程二

    在iPhone开发中,图形界面的构建是至关重要的,尤其是对于那些需要自定义视觉效果的应用程序。本教程将深入探讨两个主要的图形库:Quartz 2D和OpenGL ES,它们是iOS平台上进行图形绘制的核心工具。 Quartz 2D是Core...

    Beginning iPhone Development: Exploring the iPhone SDK

    ### 关于《Beginning iPhone Development: Exploring the iPhone SDK》的知识点总结 #### 一、书籍简介与适用对象 《Beginning iPhone Development: Exploring the iPhone SDK》是一本面向初学者的iPhone应用程序...

    百度.王集鹄.图形图像技术

    贝赛尔曲线是一种常用于图形设计和平面绘图的曲线类型,它可以由一系列控制点定义。贝赛尔曲线有两个重要的数学公式: - 计算轨迹公式 - 切分曲线公式 这些公式使得开发者能够精确地控制曲线的形状和走向。 #####...

    iphone3开发基础教程

    2.4 小结 20 第3章 处理基本交互 21 3.1 MVC范型 21 3.2 创建项目 22 3.3 创建视图控制器 22 3.3.1 输出口 23 3.3.2 操作 24 3.3.3 将操作和输出口添加到视图控制器 24 3.3.4 将操作和输出口添加到实现文件 26 3.4 ...

    Android-自定义声音波纹适合作录音应用的开发模仿iPhone录音效果

    在Android平台上,开发一款录音应用并模仿iPhone录音效果,往往涉及到对用户界面的精心设计以及音频处理技术的应用。本文将详细探讨如何实现自定义声音波纹这一关键元素,以达到类似iPhone录音应用的用户体验。 ...

    iphone 图像处理小结

    以下是对iPhone图像处理的一些关键知识点的总结: 1. 图片尺寸调整: 当需要改变图片尺寸时,可以使用`UIGraphicsBeginImageContext`和`UIGraphicsGetImageFromCurrentImageContext`这两个方法。创建一个新的图形...

    iPhone OpenGL ES Crash Course

    ### iPhone OpenGL ES 简介与实践教程 #### OpenGL ES 概览 OpenGL ES(Open Graphics Library for Embedded Systems)是一种跨平台的...对于想要入门OpenGL ES并应用于iPhone开发的开发者来说,这是一个很好的起点。

    iphone画饼图和扇形

    Core Graphics是Apple提供的低级2D绘图框架,它允许开发者直接操作像素进行图形绘制。在Swift或Objective-C中,我们通常通过`UIGraphicsBeginImageContext`开启一个新的图形上下文,然后使用`CGContext`的相关方法...

    西蒙iphone-OpenGL ES

    通过以上总结,我们可以了解到OpenGL ES在iPhone开发中的基础应用,包括基本的图元绘制、坐标系统以及简单的三维图形渲染。这对于初学者来说是一个很好的入门点,同时也为更高级的应用开发打下了坚实的基础。

    (0167)-iOS/iPhone/iPAD/iPod源代码-绘图(Drawing)-Color Picker

    本教程将详细介绍如何在iPhone、iPad或iPod Touch上实现这样一个功能,包括颜色选择器的实现、放大镜功能以及调整颜色亮度的机制。 首先,颜色选择器的核心是色彩模型,iOS主要支持两种色彩模型:RGB(红绿蓝)和...

    cocos2d for iphone0.99源代码

    总结,Cocos2d for iPhone 0.99虽然年代久远,但其源代码仍然是学习游戏开发和Cocos2d框架原理的宝贵资源。理解并实践这个版本,有助于开发者更好地掌握游戏开发的基础,为后续的项目打下坚实基础。面对版本兼容问题...

    Apress.Developing.C#.Apps.for.iPhone.and.iPad.using.MonoTouch

    12. **图形绘制与动画**:第十六章和第十七章涉及如何使用Core Graphics进行绘图以及如何利用Core Animation实现动态效果。 13. **通知系统与数据管理**:第十八章和第十九章探讨了如何使用通知系统以及如何处理应用...

    HTML5_游戏开发

    - **Canvas API**:Canvas 是 HTML5 中用于绘图的新特性,可以通过 JavaScript 在网页上绘制图形,是开发2D游戏的重要工具。 - **WebGL**:WebGL 是一种用于渲染交互式3D和2D图形的标准,无需任何插件即可在任何兼容...

    ipad 开发技术指南

    - **亮点**:由The Omni Group开发的专业绘图软件,可用于绘制图表、流程图、组织结构图等多种图形。OmniGraffle特别强调拖放式操作和所见即所得的界面设计,支持自定义“Stencils”(模板),广泛应用于头脑风暴、...

    深入理解iPhone屏幕双缓冲技术

    屏幕双缓冲技术是一种在图形用户界面...总结来说,虽然iPhone平台上关于屏幕双缓冲技术的资料较少,但通过官方提供的Core Graphics框架,开发者依然可以利用屏幕双缓冲技术来优化应用程序的绘图性能和提升用户体验。

Global site tag (gtag.js) - Google Analytics