iPhone图形开发绘图小结
iPhone图形开发绘图教程是本文要介绍的内容,介绍了很多关于绘图类的使用,先来看详细内容讲解。
1、绘图总结:
绘图前设置:
- CGContextSetRGBFillColor/CGContextSetFillColorWithColor //填充色
- CGContextSetRGBStrokeColor/CGContextSetStrokeColorWithColor //笔颜色
- CGContextSetLineWidth //线宽度
绘图后设置:
注: 画完图后,必须 先用CGContextStrokePath来描线,即形状,后用CGContextFillPath来填充形状内的颜色.
2.常见图形绘制:
- CGContextFillRect/CGContextFillRects
- CGContextFillEllipseInRect
- CGContextAddRect/CGContextAddRects
- CGContextAddEllipseInRect
- CGContextAddLines
- CGContextMoveToPoint
- CGContextAddLineToPoint
3.常见控制方法:
- CGContextSaveGState
- CGContextRestoreGState
4.创建内存图像context:
- CGBitmapContextCreate <-----CGContextRlease释放
- CGColorSpaceCreateWithName (KCGColorSpaceGenericRGB)
- CGColorSpaceRlease
- CGBitmapContextCreateImage() <-----CGImageRlease 释放.
- eg:
- CGContextRefMyCreateBitmapContext(intpixelsWide,intpixelsHigh)
- {
- CGContextRef context=NULL;
- CGColorSpaceRefcolorSpace;
- void* bitmapData;
- int bitmapByteCount;
- int bitmapBytesPerRow;
- bitmapBytesPerRow =(pixelsWide*4);
- bitmapByteCount =(bitmapBytesPerRow*pixelsHigh);
- colorSpace=CGColorSpaceCreateDeviceRGB();
- bitmapData=malloc(bitmapByteCount);
- if(bitmapData==NULL)
- {
- fprintf(stderr,"Memorynotallocated!");
- returnNULL;
- }
- context=CGBitmapContextCreate(bitmapData,
- pixelsWide, pixelsHigh, 8,
- bitmapBytesPerRow, colorSpace,
- kCGImageAlphaPremultipliedLast);
- if(context==NULL)
- {
- free(bitmapData);
- fprintf(stderr,"Contextnotcreated!");
- returnNULL;
- }
- CGColorSpaceRelease(colorSpace);
- returncontext;
- }
5.图形的变换:
- CGContextTranslateCTM
- CGContextRotateCTM
- CGContextScaleCTM
6.常用函数:
- CGRectContainsPoint();
- CGRectContainsRect();
- CGRectIntersectsRect();
- CGRectIntersection();
- CGPointEqualToPoint();
- CGSizeEqualToSize();
7.从原图片中取小图.
- CGImageCreateWithImageInRect
8.屏幕快照:
- #import "QuartzCore/QuartzCore.h"
- UIGraphicsBeginImageContext(yourView.frame.size);
- [[yourView layer] renderInContext:UIGraphicsGetCurrentContext()];
- UIImage*screenshot =UIGraphicsGetImageFromCurrentImageContext();
- UIGraphicsEndImageContext();
- from:http://www.cppblog.com/zhangyuntaoshe/articles/123066.html
合并两张bit图到一张image的方法
- To graphically merge two images into a new image, you do something like this:
- UIImage *result = nil;
- unsignedchar *data = calloc(1,size.width*size.height*kBytesPerPixel);
- if (data != NULL) {
- // kCGImageAlphaPremultipliedLast 为预记录的#define value
- // 设置context上下文
- CGContextRef context = CGBitmapContextCreate(
- data, size.width, size.height, 8, size.width*kBytesPerPixel,
- CGColorSpaceCreateDeviceRGB(), kCGImageAlphaPremultipliedLast);
- if (context != NULL) {
- UIGraphicsPushContext(context);
- // Image 为下载的背景图片,用于比较context
- CGContextTranslateCTM(context, 0, size.height);
- CGContextScaleCTM(context, 1, -1);
- [image drawInRect:imageRect];
- [image2 drawInRect:image2Rect];
- UIGraphicsPopContext();
- CGImageRef imageRef = CGBitmapContextCreateImage(context);
- if (imageRef != NULL) {
- result = [UIImageimageWithCGImage:imageRef];
- CGImageRelease(imageRef);
- }
- CGContextRelease(context);
- }
- free(data);
- }
- return result;
关键方法:
- CGContextRef context = CGBitmapContextCreate();
- CGContextTranslateCTM();
- CGContextScaleCTM();
- CGImageRef imageRef = CGBitmapContextCreateImage(context);
- CGImageRelease(imageRef);
小结:iPhone图形开发绘图教程的内容介绍完了,希望本文对你有所帮助!
iPhone图形开发绘图小结的更多相关文章
- (转载)如何学好iphone游戏开发
转自:http://www.cnblogs.com/zilongshanren/archive/2011/09/19/2181558.html 自从发布<如何学习iphone游戏开发>到 ...
- 前端开发个人小结 · Retrospection的博客
序 2018年转眼来到了最后一个月,算下来我进入前端之门也有一年了,虽然下半年由于忙于筹备毕业论文的相关事项,前端这一块有所放下,但是想想还是给自己这一年的学习做一个总结. 现代化软件开发确实是一个复 ...
- iPhone应用开发 UITableView学习点滴详解
iPhone应用开发 UITableView学习点滴详解是本文要介绍的内容,内容不多,主要是以代码实现UITableView的学习点滴,我们来看内容. -.建立 UITableView DataTab ...
- VB6 GDI+ 入门教程[5] 基础绘图小结
http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[5] 基础绘图小结 2009 年 6 月 18 日 4条 ...
- iPhone OS 开发 - 了解并解决代码签名问题
译者:Jestery 发表时间:2010-04-24浏览量:21082评论数:0挑错数:0 了解并解决代码签名问题 (为保持跟开发环境以及APPLE开发者社区网站结构对应,一些名词未作翻译) 绝大多数 ...
- IbatisNet开发使用小结
一. 介绍 平常做企业级应用,需求变化是经常的事,而很多基础代码重复也是很让人头疼的问题.所以很多人会使用一些ORM框架来增强项目的可维护性.可扩展性.IBatis.Net就是一个比较易用的ORM ...
- JAVA 图形开发之计算器设计(事件监听机制)
/*文章中用到的代码只是一部分,需要源码的可通过邮箱联系我 1978702969@qq.com*/ 前段时间刚帮同学用MFC写了个计算器,现在学到JAVA的图形开发,就试着水了一个计算器出来.(可以说 ...
- iPhone 应用开发的5个贴士
[编者按]本文作者为来自 Redbytes Software 的开发者 James Richard,主要介绍开发 iPhone 应用过程中大有益处的五个贴士.文章系国内 ITOM 管理平台 OneAP ...
- ARC官方文档翻译! - iPhone App开发外包专区 - 威锋论坛 - 威锋网
CHENYILONG Blog ARC官方文档翻译! - iPhone App开发外包专区 - 威锋论坛 - 威锋网 http://bbs.weiphone.com/read-htm-tid-344 ...
随机推荐
- c++11 : range-based for loop
0. 形式 for ( declaration : expression ) statement 0.1 根据标准将会扩展成这样的形式: 1 { 2 auto&& __ra ...
- LoadRunner测试下载功能点脚本(方法二)
在上一篇<LoadRunner下载功能点脚本(方法一)>中,实现的脚本仅是录制下载功能点的脚本,现在性能需求的场景更改如下: 性能需求:对系统某页面中,点击下载并将下载文件保存到本地电脑的 ...
- AVL树插入和删除
一.AVL树简介 AVL树是一种平衡的二叉查找树. 平衡二叉树(AVL 树)是一棵空树,或者是具有下列性质的二叉排序树: 1它的左子树和右子树都是平衡二叉树, 2且左子树和右子树高度之差的 ...
- C#读取USB的一些相关信息
在USB\VID_05A9&PID_2800\5&1BFE1C47&0&8里面,USB代表设备类型,5&1BFE1C47&0&8代表设备连接位置 ...
- cell的各种使用和赋值 总结
cell可以分为:自定义cell,系统的cell ,cell的自适应,.xib的cell //第一种cell:系统cell 在 UIViewController下创建UITableView //1.0 ...
- 在mac平台运行debug.exe
最近准备学习操作系统,想先复习一下汇编语言.因为用的是mac,而看的汇编教材(<汇编语言>王爽)使用到DOS下的debug,在网上搜了一圈发现,mac 也可以模拟运行debug. 先到网上 ...
- 关于 addEventListener 和 handleEvent 方法
使用 addEventListener 可以绑定事件,并传入回调函数. Mozilla 0.9.1 和 Netscape 6.1 之后的版本不但支持传递函数引用,也都允许直接把拥有 handleEve ...
- Dede修改文章默认标题长度,让标题全显示
第一步首先你要进入dedecms后台,系统——系统基本参数——其他选项——文档标题最大长度——在这修改为200或更大(其实200应该是足够了). 第二步进入phpmyadmin,点击dede_arch ...
- win7 去除桌面快捷方式小箭头
二手入了个 sony 的本子 vgn-sz780 拿手上,感觉真心不错,然后装系统,装好xp后发现怎么折腾都没声音,由于我的硬盘是SSD的虽然有点小只有60G,但是速度还是蛮不多的,于是一横心就装了 ...
- 在树莓派上安装leanote
作者:冥王星 "noright0@163.com" 前言 宿舍有个树莓派2B,连接到电视机,安装OSMC系统,USB接口连接移动硬盘一块,平时用来BT下载和看电影.美剧. OSMC ...