我们知道,Cocoa程序是完全支持多语言的,包括iPhone中的程序。这里简单介绍一下制作多语言iPhone程序的方法,同时也是iPhone中显示 中文的最好办法。 XCode中支持多语言 在项目中点右键
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)
- {
- CGContextRefcontext=NULL;
- CGColorSpaceRefcolorSpace;
- void*bitmapData;
- intbitmapByteCount;
- intbitmapBytesPerRow;
- 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);
- [[yourViewlayer]renderInContext:UIGraphicsGetCurrentContext()];
- UIImage*screenshot=UIGraphicsGetImageFromCurrentImageContext();
- UIGraphicsEndImageContext();
- from:http://www.cppblog.com/zhangyuntaoshe/articles/123066.html
合并两张bit图到一张image的方法
- Tographicallymergetwoimagesintoanewimage,youdosomethinglikethis:
- UIImage*result=nil;
- unsignedchar*data=calloc(1,size.width*size.height*kBytesPerPixel);
- if(data!=NULL){
- //kCGImageAlphaPremultipliedLast为预记录的#definevalue
- //设置context上下文
- CGContextRefcontext=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);
- [imagedrawInRect:imageRect];
- [image2drawInRect:image2Rect];
- UIGraphicsPopContext();
- CGImageRefimageRef=CGBitmapContextCreateImage(context);
- if(imageRef!=NULL){
- result=[UIImageimageWithCGImage:imageRef];
- CGImageRelease(imageRef);
- }
- CGContextRelease(context);
- }
- free(data);
- }
- returnresult;
关键方法:
- CGContextRefcontext=CGBitmapContextCreate();
- CGContextTranslateCTM();
- CGContextScaleCTM();
- CGImageRefimageRef=CGBitmapContextCreateImage(context);
- CGImageRelease(imageRef);
小结:iPhone图形开发绘图教程的内容介绍完了,希望本文对你有所帮助!