iPhone图形开发绘图小结

转载 2012年03月22日 23:18:47

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. UIGraphicsBeginImageContext(yourView.frame.size);
  3. [[yourView layer] renderInContext:UIGraphicsGetCurrentContext()];
  4. UIImage*screenshot =UIGraphicsGetImageFromCurrentImageContext();
  5. UIGraphicsEndImageContext();
  6. 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图形开发绘图教程的内容介绍完了,希望本文对你有所帮助!

 

http://yangping-account.iteye.com/blog/1329144

相关文章推荐

iPhone图形开发绘图小结

http://wsqwsq000.iteye.com/blog/1317018 高亮uiimage @interface UIImage (Tint) - (UIImage *)tinted...
  • qhexin
  • qhexin
  • 2012年02月22日 09:05
  • 715

【Android开发】图形图像处理技术-常用绘图类之Canvas类

Canvans类代表画布,通过该类提供的方法,可以绘制各种图形(如矩形、圆形和线条等)。通常情况下,要在Android中绘图,需要先创建一个继承自View类的视图,并且在该类中重写onDraw(Can...

DirectX 9.0c游戏开发手记之RPG编程自学日志之10: Drawing with DirectX Graphics (用DirectX图形绘图)(第4节)(C)

本文由哈利_蜘蛛侠原创,转载请注明出处!有问题请联系2024958085@qq.com           这一次我们继续来讲述Jim Adams老哥的RPG编程书籍第二版第二章的第4节:Gettin...

iOS开发-Quartz2D上下文栈的操作&详细分析绘图本质(图形上下文栈)

1.关于图形上下文栈的操作 •将当前的上下文copy一份,保存到栈顶(那个栈叫做”图形上下文栈”) void CGContextSaveGState(CGContextRef c) •将栈...

DirectX 9.0c游戏开发手记之RPG编程自学日志之9: Drawing with DirectX Graphics (用DirectX图形绘图)(第4节)(B)

本文由哈利_蜘蛛侠原创,转载请注明出处!有问题请联系2024958085@qq.com           这一次我们继续来讲述Jim Adams老哥的RPG编程书籍第二版第二章的第4节:Gett...

iOS开发之--图形上下文以及绘图

概述 在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益于它强大的开发框架。今天我们将围绕iOS中两大图形、图像绘图框架进行介绍:Quartz 2D绘制2D图形和C...

游戏开发笔记之四——游戏画面绘图(一)基本图形绘制

首先介绍一下GDI(Graphics Device Interface)。GDI,中文翻译为“图形设备接口”,是Windows API中相当重要的一个成员,它掌管了所有显像设备的图像显示及输出功能。W...

【Android开发】图形图像处理技术-常用绘图类之Paint类

Paint类代表画笔,用来描述图形的颜色风格,如线宽、颜色、透明度和填充效果等信息。使用Paint类时,首先需要创建该类的对象,这可以通过该类提供的构造方法来实现。通常情况下,只需要使用无参数的构造方...

【Visual C++】游戏开发笔记之四——游戏画面绘图(一)基本图形绘制

首先介绍一下GDI(Graphics Device Interface)。GDI,中文翻译为“图形设备接口”,是Windows API中相当重要的一个成员,它掌管了所有显像设备的图像显示及输出功能。W...

Android官方开发文档Training系列课程中文版:OpenGL绘图之图形绘制

原文地址:http://android.xsoftlab.net/training/graphics/opengl/draw.html如果你还不清楚如何定义图形及坐标系统,请移步:Android官方开...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iPhone图形开发绘图小结
举报原因:
原因补充:

(最多只允许输入30个字)