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图形开发绘图小结

iPhone图形开发绘图教程是本文要介绍的内容,介绍了很多关于绘图类的使用,先来看详细内容讲解。 1、绘图总结: 绘图前设置: CGContextSetRGBFillColor...
  • liangliang2727
  • liangliang2727
  • 2015年05月22日 04:10
  • 411

iOS开发 高级绘图

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

java学习笔记图形程序设计及GUI应用小结(1)

------- android培训、java培训、期待与您交流! -------- Swing介绍 Swing是不对等基于GUI工具箱的正式名字。它已是Java基础类库(Java Founda...
  • u013111003
  • u013111003
  • 2015年09月19日 16:16
  • 662

DirectX3D游戏开发二 绘制第一个图形

在前一章节我们已经创建了我们的第一个DirectX3D项目,但是只是显示一个灰色的窗口而已,并没有进行相应的 绘图操作。那么今天,我们就来让窗口变得更漂亮一些。    今天主要讲通过顶点缓冲区绘制图形...
  • liuyi1207164339
  • liuyi1207164339
  • 2015年08月28日 17:08
  • 1555

3D图形软引擎开发总结

前言 经过几个月的学习,终于将这个3D图形软引擎基本制作完成了。在这个过程中,...
  • i_dovelemon
  • i_dovelemon
  • 2014年05月06日 17:29
  • 4635

Android应用开发学习笔记之绘图

作者:刘昊昱  博客:http://blog.csdn.net/liuhaoyutz   一、绘图常用类介绍   在Android中绘图时,常用到的几个类是Paint、Canvas、Bitm...
  • liuhaoyutz
  • liuhaoyutz
  • 2013年08月22日 16:21
  • 6384

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

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

iOS图形处理和性能

转自陶丰平的博客   原文的题目是Designing for iOS: Graphics & Performance,晚上花了两个不到小时大致翻译了下。   ---Begin--- 在之前...
  • pjk1129
  • pjk1129
  • 2015年04月20日 16:33
  • 1321

Android UI绘制之独立线程绘制

在之前
  • alitter
  • alitter
  • 2014年08月30日 11:39
  • 1214

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

Paint类代表画笔,用来描述图形的颜色风格,如线宽、颜色、透明度和填充效果等信息。使用Paint类时,首先需要创建该类的对象,这可以通过该类提供的构造方法来实现。通常情况下,只需要使用无参数的构造方...
  • u013517797
  • u013517797
  • 2015年04月20日 21:58
  • 1585
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iPhone图形开发绘图小结
举报原因:
原因补充:

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