(CoreGraphics)画图IOS

CoreGraphics画图iOS片断:


//线的接合

-(void)drawRooftopAtTopPointof:(CGPoint)paramTopPoint textToDisplay:(NSString *)paramText lineJoin:(CGLineJoin)paramLineJoin{

    [[UIColorbrownColor]set];

    CGContextRef currentContext =UIGraphicsGetCurrentContext();

    CGContextSetLineJoin(currentContext,paramLineJoin);

    CGContextSetLineWidth(currentContext, 20.0f);

    CGContextMoveToPoint(currentContext, paramTopPoint.x-140, paramTopPoint.y+100);

    CGContextAddLineToPoint(currentContext, paramTopPoint.x, paramTopPoint.y);

    CGContextAddLineToPoint(currentContext, paramTopPoint.x+140, paramTopPoint.y+100);

    CGContextStrokePath(currentContext);

    [[UIColorbrownColor]set];

    [paramText drawAtPoint:CGPointMake(paramTopPoint.x-40.0f, paramTopPoint.y+60.0f)withFont:[UIFontboldSystemFontOfSize:30.0f]];

    

}


- (void)drawRect:(CGRect)rect

{

//画字符串

    UIColor *magentaColor =[UIColorcolorWithRed:0.5green:0.0f blue:0.5f alpha:1.0f];

    [magentaColor set];

    UIFont *helve=[UIFontfontWithName:@"HelveticaNeue-Bold"size:40.0f];

    NSString *myString =@"Some String";

    

    //[myString drawAtPoint:CGPointMake(40, 180) withFont:helve];

    [myString drawInRect:CGRectMake(100,120, 150, 200) withFont:helve];

    

    

    //color reference

    CGColorRef colorRef =[magentaColor CGColor];//CGColorRef 的对象

    const CGFloat *components =CGColorGetComponents (colorRef);//颜色对象的各个分量

    NSUInteger componentsCount =CGColorGetNumberOfComponents(colorRef);//颜色对象的各个分量的数量

    

    NSUInteger counter =0;

    for (counter =0; counter<componentsCount; counter++) {

        

        NSLog(@"compoent %lu =%0.02f",(unsignedlong )counter +1,components[counter]);

    }

    

    

    //png drawRect

    UIImage *imageIcon= [UIImageimageNamed:@"xcode"];

    if(imageIcon!=nil){

        NSLog(@"Successfully loaded the imaged");

        [imageIcon drawAtPoint:CGPointMake(0,20)];

        [imageIcon drawInRect:CGRectMake(50.0f,10.0f, 40.0f,35.0f)];

    }else {

        NSLog(@"failed to load the image");

    }

    //drawLine

    [[UIColorbrownColor]set];

    CGContextRef currentContext =UIGraphicsGetCurrentContext();

    CGContextSetLineWidth(currentContext, 5.0f);

    CGContextMoveToPoint(currentContext, 20.0f, 20.0f);

    CGContextAddLineToPoint(currentContext, 100, 100.0f);

    CGContextAddLineToPoint(currentContext, 100.0f  ,100.0f);

    CGContextAddLineToPoint(currentContext, 300.0f, 100.0f );

    CGContextStrokePath(currentContext);

    

    //Linejoin 线的接合处

    [selfdrawRooftopAtTopPointof:CGPointMake(160.0f,40.0f) textToDisplay:@"尖角连接"

                         lineJoin:kCGLineJoinMiter];//尖角连接

    [selfdrawRooftopAtTopPointof:CGPointMake(160.0f,180.0f) textToDisplay:@"平角"

                         lineJoin:kCGLineJoinBevel];//平角

    [selfdrawRooftopAtTopPointof:CGPointMake(160.0f,320.0f) textToDisplay:@"圆形"

                         lineJoin:kCGLineJoinRound]; // 圆形

    

    //Draw Path

    CGMutablePathRef path =CGPathCreateMutable();

    CGRect screenBounds =[[UIScreenmainScreen]bounds];

    CGPathMoveToPoint(path, NULL, screenBounds.origin.x, screenBounds.origin.y);

    CGPathAddLineToPoint(path, NULL, screenBounds.size.width, screenBounds.size.height);

    CGPathMoveToPoint(path, NULL, screenBounds.size.width, screenBounds.origin.y);

    CGPathAddLineToPoint(path, NULL, screenBounds.origin.x, screenBounds.size.height);

    currentContext =UIGraphicsGetCurrentContext();

    CGContextSetLineWidth(currentContext, 4.0f);

    CGContextAddPath(currentContext, path);

    [[UIColorblueColor ]setStroke];

    CGContextDrawPath(currentContext,kCGPathStroke);

    CGPathRelease(path);

    

    //Draw  rectangle

    CGMutablePathRef path1=CGPathCreateMutable();//Create the path first. Just the path handle

    CGRect rectangle =CGRectMake(10,10, 20, 30);

    CGPathAddRect(path1,NULL, rectangle);//Add the rectangle to the path1

    CGContextRef currentContext1=UIGraphicsGetCurrentContext();/* Get the handle to the current context */

    CGContextAddPath(currentContext1, path);// Add the path to the context

    [[UIColorcolorWithRed:0.20fgreen:0.60fblue:0.80falpha:1.0f]setFill];//Set the fill color to cornflower blue

    [[UIColorbrownColor]setStroke];// Set the stroke color to brown

    CGContextSetLineWidth(currentContext1, 5.0f);

    CGContextDrawPath(currentContext1,kCGPathFillStroke);//Stroke and fill the path on the context

    CGPathRelease(path1);

    

    //Draw  rectangles

    CGMutablePathRef path2 =CGPathCreateMutable();//添加矩形的句柄

    CGRect rectangle1 =  CGRectMake(30, 30, 20, 30);

    CGRect rectangle2 =  CGRectMake(40, 10, 90, 50);

    CGRect rectangles[2] ={rectangle1,rectangle2};

    CGPathAddRects(path2, NULL, (const CGRect *)&rectangles,2);

    CGContextRef currentContext3 =UIGraphicsGetCurrentContext();

    CGContextAddPath(currentContext3, path2);

    [[UIColorcolorWithRed:0.20fgreen:0.60fblue:0.80falpha:1.0f]setFill];

    [[UIColorblackColor] setStroke];

    CGContextSetLineWidth(currentContext3, 3);

    CGContextDrawPath(currentContext3,kCGPathFillStroke);

    CGPathRelease(path2);

    

    //Add Shape Shadow

    [selfdrawRectAtTopOfScreen];

    [selfdrawRectAtBottomOfScreen];

    

    //绘制线性渐的(Axial轴向)变颜色

    CGContextRef currentContext_1 = UIGraphicsGetCurrentContext();

    CGContextSaveGState(currentContext_1);

    CGColorSpaceRef colorSpace =CGColorSpaceCreateDeviceRGB();//给一个RGB色彩空间

    UIColor *startColor = [UIColororangeColor];

    CGFloat *startColorComponents =(CGFloat *)CGColorGetComponents([startColorCGColor]);

    UIColor *endColor = [UIColorblueColor];

    CGFloat *endColorComponents = (CGFloat *)CGColorGetComponents([endColorCGColor]);

    CGFloat colorComponents[8] = //颜色分量

    {

        startColorComponents[0],/* Four components of the orange color (RGBA) */

        startColorComponents[1],

        startColorComponents[2],

        startColorComponents[3], /* First color = orange */

   

        endColorComponents[0],/* Four components of the blue color (RGBA) */

        endColorComponents[1],

        endColorComponents[2],

        endColorComponents[3], /* Second color = blue */

    };

    CGFloat colorIndices[2] =//颜色数组中各个颜色的位置,一种颜色到另一种颜色的变速有多快。必须和CGGradientCreateWithColorComponents的第四个参数个数相同

    {

        0.0f,/* Color 0 in the colorComponents array */

        1.0f,/* Color 1 in the colorComponents array */

    };

    

    CGGradientRef gradient = CGGradientCreateWithColorComponents (colorSpace, (constCGFloat *)&colorComponents, (constCGFloat *)&colorIndices, 2);//创建渐变对象句柄

    CGColorSpaceRelease(colorSpace);

    

    CGPoint startPoint, endPoint;

    startPoint = CGPointMake(120,260);

    endPoint = CGPointMake(200.0f,220);

    //    CGContextDrawLinearGradient (currentContext, gradient, startPoint, endPoint,kCGGradientDrawsBeforeStartLocation | kCGGradientDrawsAfterEndLocation);

    CGContextDrawLinearGradient (currentContext_1, gradient, startPoint, endPoint,0);//0为不扩展渐变

    CGGradientRelease(gradient);

    CGContextRestoreGState(currentContext_1);


    //CGAffineTransformMakeTranslate   仿射变换

    CGMutablePathRef pathA=CGPathCreateMutable();/* Create the pathA first. Just the path handle. */

    CGRect rectangleA =CGRectMake(10.0f,10.0f, 100.0f,90.0f);

    

    CGAffineTransform transform =CGAffineTransformMakeTranslation(150.0f,0.0f);

    CGPathAddRect(pathA, &transform, rectangleA);/* Add the rectangleA to the path */

    

    CGContextRef currentContextB =UIGraphicsGetCurrentContext();

    CGContextAddPath(currentContextB, pathA);    

    [[UIColorcolorWithRed:0.20fgreen:0.60fblue:0.80falpha:1.0f]setFill];

    [[UIColorbrownColor]setStroke];/* Set the stroke color to brown */

    CGContextSetLineWidth(currentContextB, 4.0f);

    CGContextDrawPath(currentContextB,kCGPathFillStroke);/* Stroke and fill the path on the context */

    CGPathRelease(pathA);


    //CGContextTranslateCTM     (CTM current transformation matrix当前变换矩阵)

    CGMutablePathRef pathCTM =CGPathCreateMutable();

    CGRect rectangleCTM =CGRectMake(200,10, 50, 100);

    CGPathAddRect(pathCTM, NULL, rectangleCTM);

    CGContextRef currentContextCTM =UIGraphicsGetCurrentContext();

    CGContextSaveGState(currentContextCTM);

    CGContextTranslateCTM(currentContextCTM,.0f, 100.0f);/* Translate the current transformation matrix to the right by 100 points */

    CGContextAddPath(currentContextCTM, pathCTM);/* Add the path to the context */

    [[UIColorcolorWithRed:0.20fgreen:0.60fblue:0.80falpha:1.0f]setFill];

    [[UIColorbrownColor] setStroke];

    CGContextSetLineWidth(currentContextCTM, 5.0f);

    CGContextDrawPath(currentContextCTM,kCGPathFillStroke);

    CGPathRelease(pathCTM);

    CGContextRestoreGState(currentContextCTM);

    


    CGMutablePathRef pathMC =CGPathCreateMutable();//CGAffineTransformMakeScale 缩放图形

    CGRect rectangleMC =CGRectMake(10.0f,300.0f, 200.0f, 300.0f);/* Here are our rectangle boundaries */

    CGPathAddRect(pathMC,NULL, rectangleMC);/* Add the rectangle to the path */

    CGContextRef currentContextMC =UIGraphicsGetCurrentContext();/* Get the handle to the current context */

    CGContextScaleCTM(currentContextMC,0.5f, 0.5f); /* Scale everything drawn on the current graphics context to half itssize */

    

    CGContextAddPath(currentContextMC, pathMC);/* Add the path to the context */

    [[UIColorcolorWithRed:0.20fgreen:0.60fblue:0.80alpha:1.0f]setFill];  /* Set the fill color to cornflower blue */

    [[UIColorbrownColor]setStroke];/* Set the stroke color to brown */

    CGContextSetLineWidth(currentContextMC,5.0f);  /* Set the line width (for the stroke) to 5 */

    CGContextDrawPath(currentContextMC,kCGPathFillStroke); /* Stroke and fill the path on the context */

    CGPathRelease(pathMC); /* Dispose of the path */

    

    //CGAffineTransformMakeRotation  旋转图形 旋转值必为弧度度,正值代表顺时针旋转,负值代表逆时针旋转

    CGMutablePathRef pathMR =CGPathCreateMutable();

    CGAffineTransform  transformMR =CGAffineTransformMakeRotation((45.0f *M_PI) / 180.0f);

    CGRect rectangleMR =CGRectMake(200,50, 50, 100);

    CGPathAddRect(pathMR, &transformMR, rectangleMR);

    CGContextRef currentContextMR =UIGraphicsGetCurrentContext();

    CGContextSaveGState(currentContextMR);

    CGContextTranslateCTM(currentContextMR, .0f, 100.0f);

    CGContextAddPath(currentContextMR, pathMR);/* Add the path to the context */

    [[UIColorcolorWithRed:0.20fgreen:0.60fblue:0.80falpha:1.0f]setFill];

    [[UIColorbrownColor] setStroke];

    CGContextSetLineWidth(currentContextMR, 5.0f);

    CGContextDrawPath(currentContextMR,kCGPathFillStroke);

    CGPathRelease(pathMR);

    CGContextRestoreGState(currentContextMR);

    

}

- (void) drawRectAtTopOfScreen{

    CGContextRef currentContext =UIGraphicsGetCurrentContext();

    CGContextSaveGState(currentContext);//保存图形上下文的状态

    CGContextSetShadowWithColor(currentContext,CGSizeMake(10.0f,10.0f)/*偏移量*/,20.0f/*模糊度*/, [[UIColorgrayColor] CGColor]);

    CGMutablePathRef path =CGPathCreateMutable();

    

    CGRect firstRect = CGRectMake(55.0f, 200.0f, 100.0f, 100.0f);

    CGPathAddRect(path, NULL, firstRect);

    CGContextAddPath(currentContext, path);

    [[UIColorcolorWithRed:0.20fgreen:0.60fblue:0.80falpha:1.0f]setFill];

    CGContextDrawPath(currentContext,kCGPathFill);

    CGPathRelease(path);

    CGContextRestoreGState(currentContext ); //恢复到以前的状态

}


- (void) drawRectAtBottomOfScreen{

    /* Get the handle to the current context */

    CGContextRef currentContext =UIGraphicsGetCurrentContext();

    CGMutablePathRef secondPath = CGPathCreateMutable();

    CGRect secondRect = CGRectMake(150.0f, 250.0f, 200.0f, 200.0f);

    CGPathAddRect(secondPath, NULL, secondRect);

    CGContextAddPath(currentContext, secondPath);

    [[UIColorpurpleColor] setFill];

    CGContextDrawPath(currentContext,kCGPathFill);

    CGPathRelease(secondPath);

}


@end


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值