IOS--Quartz2D繪圖

使用quartz2D繪製圖形的步驟 :   app

     1.獲取繪製的對象(上下文)(畫布、紙)字體

     2.設置繪製的路徑spa

     3.將路徑添加到繪製的對象(上下文)code

     4.設置繪製的屬性:線條的顏色、線條的寬度、裁減區域  contextorm

     5.繪製對象

     (6.釋放路徑)若是路徑經過creat建立的就須要釋放圖片

繪製線條
ip

    //1.獲取繪製的對象(上下文)(畫布、紙)
    CGContextRef context = UIGraphicsGetCurrentContext();
   
   
   第一種繪製方法
    //2.設置繪製的路徑
    CGMutablePathRef path = CGPathCreateMutable();
    //設置路徑的起始點
    CGPathMoveToPoint(path, NULL, 50, 50);
    
    //添加目標點
    CGPathAddLineToPoint(path, NULL, 200, 200);
    
    //添加目標點
    CGPathAddLineToPoint(path, NULL, 50, 200);
    
    //添加目標點
    //    CGPathAddLineToPoint(path, NULL, 50, 50);
    
    //關閉路徑
    CGPathCloseSubpath(path);
    
    //3.將路徑添加到繪製的對象(上下文)
    CGContextAddPath(context, path);
    
    //4.設置繪製的屬性:線條的顏色、線條的寬度、裁減區域
    //設置繪製的線條顏色
    CGContextSetRGBStrokeColor(context, 5/255.0, 128/255.0, 0, 1);
    //設置填充色
    CGContextSetRGBFillColor(context, 22/255.0, 142/255.0, 242/255.0, 1);
    
    //設置線條的寬度
    CGContextSetLineWidth(context, 3);
    
    //5.繪製
    /*
     kCGPathFill,  只繪製填充
     kCGPathStroke,  繪製線條
     kCGPathFillStroke, 填充和線條
     */
    CGContextDrawPath(context, kCGPathFillStroke);
    
    //6.釋放路徑
    CGPathRelease(path);
    
    
    
    第二種繪製方法
    //2.設置繪製的路徑
    CGPoint p1 = CGPointMake(50, 50);
    CGPoint p2 = CGPointMake(200, 50);
    CGPoint p3 = CGPointMake(200, 200);
    CGPoint p4 = CGPointMake(50, 200);
    CGPoint p5 = p1;
    
    CGPoint pointArray[] = {p1,p2,p3,p4,p5};
    
    //將點放到路徑中
    CGContextAddLines(context, pointArray, 5);
    
    //四、設置繪製的屬性
//    //設置線條的顏色
//    CGContextSetRGBStrokeColor(context, 1, 1, 1, 1);
//    //設置填充色
//    CGContextSetRGBFillColor(context, 43/255.0, 131/255.0, 160/255.0, 1);
    
    //使用UIKit中設置顏色的方法
//    [[UIColor redColor] setStroke];
//    [[UIColor blueColor] setFill];
    //設置線條和填充色都是這個顏色
//    [[UIColor redColor] set];
    
    //五、繪製
    CGContextDrawPath(context, kCGPathEOFillStroke);


繪製矩形it

 

 //1.獲取繪製的對象(上下文)(畫布、紙)
    CGContextRef context = UIGraphicsGetCurrentContext();
    
        
    CGRect rect = CGRectMake(40, 40, 100, 100);
    
    //在上下文上添加矩形
    CGContextAddRect(context, rect);
    
    //設置線條的顏色
    [[UIColor greenColor] setStroke];
    //設置填充色
    [[UIColor redColor] setFill];
    
    //設置線條的寬度
    CGContextSetLineWidth(context, 10);
    
    //設置鏈接點得樣式
    CGContextSetLineJoin(context, kCGLineJoinRound);
    
    //繪製
    CGContextDrawPath(context, kCGPathFillStroke);
    
    
    
    //使用UI繪製矩形
    CGRect rect1 = CGRectMake(90, 50, 200, 200);
    
    [[UIColor redColor] setStroke];
    [[UIColor greenColor] setFill];
    
    //若是設置,則UIRectFrame繪製線條和填充
    UIRectFillUsingBlendMode(rect1, kCGBlendModeCopy);
    
    //繪製矩形框(線條)
    UIRectFrame(rect1);
    //繪製填充圖形
//    UIRectFill(rect);


繪製圓形io

   
    //1.獲取繪製的對象(上下文)(畫布、紙)
    CGContextRef context = UIGraphicsGetCurrentContext();

    //在上下文中添加圓
    /*
     x,y表示圓心
     radius:半徑
     startAngle:起始角度
     endAngle:結束角度  注角度的正負
     clockwise:繪製的方向  1:逆時針  0:順時針
     */
    CGContextAddArc(context, 150, 150, 100, 0, 2*M_PI, 1);
    
    //設置線條的顏色
    [[UIColor orangeColor] setStroke];
    [[UIColor greenColor] setFill];
    
    CGContextDrawPath(context, kCGPathFillStroke);
    */
    
    //繪製橢圓
    CGRect rect = CGRectMake(30, 30, 200, 100);
    
    
    //繪製矩形
//    UIRectFrame(rect);
    CGContextAddEllipseInRect(context, rect);
    
    CGContextSetRGBStrokeColor(context,43/255.0, 131/255.0, 160/255.0, 1);
    
    //繪製
    CGContextDrawPath(context, kCGPathStroke);

繪製貝塞爾曲線

    
    //1.獲取繪製的對象(上下文)(畫布、紙)
    CGContextRef context = UIGraphicsGetCurrentContext();

    //設置起始點
    CGContextMoveToPoint(context, 20, 200);
    
    //添加曲線
//    CGContextAddCurveToPoint(context, 100, 20, 120, 300, 300, 50);
    
    CGContextAddQuadCurveToPoint(context, 150, 20, 300, 200);
    
    //繪製
    CGContextDrawPath(context, kCGPathStroke);

繪製圖片

//1.獲取繪製的對象(上下文)(畫布、紙)
    CGContextRef context = UIGraphicsGetCurrentContext();
    
        //UIKit提供的多種方式
    //方式一:指定繪製的初始點,繪製的大小有圖片決定(圖片的原尺寸)
    [img drawAtPoint:CGPointMake(30, 30)];
    //方式二:指定繪製的位置和大小,圖片會在矩形區域中填充
    [img drawInRect:CGRectMake(30, 30, 100, 200)];
    //方式三:保證圖片的原尺寸的前提下,平鋪視圖
    [img drawAsPatternInRect:CGRectMake(30, 30, 100, 200)];
    
    //保存之前的狀態
    CGContextSaveGState(cotext);
    
    //縮放y軸
    CGContextScaleCTM(cotext, 1, -1);
    //平移
    CGContextTranslateCTM(cotext, 0, -200);
    
    
    
    //使用Core Graphic方法繪製圖片
    CGContextDrawImage(cotext, CGRectMake(0, 0, 200, 200), img.CGImage);
    
    //恢復
    CGContextRestoreGState(cotext);


繪製文字

圖片
//1.獲取繪製的對象(上下文)(畫布、紙)
    CGContextRef context = UIGraphicsGetCurrentContext();
        //繪製的內容
    NSString *text = @"我就是我,是顏色不同的煙火";
    
    //設置繪製的區域
    CGRect rect = CGRectMake(30, 90, 20, 500);
    
    UIRectFrame(rect);
    
    NSDictionary *dic = @{
                          NSFontAttributeName:[UIFont systemFontOfSize:18],
                          NSForegroundColorAttributeName:[UIColor orangeColor]
                          };
    //注意:使用此方法繪製文字的時候,字體的顏色使用字典設置
    [text drawInRect:rect withAttributes:dic];
    
    //設置線條
//    [[UIColor redColor] set];
    
//    [text drawInRect:rect withFont:[UIFont systemFontOfSize:18] lineBreakMode:NSLineBreakByWordWrapping];
相關文章
相關標籤/搜索