IOS(UI)_CGContextRef(繪畫)

繪畫

一般創建UIView時都要一個drawRect在下面被註釋掉
現在把註釋去掉

//覆蓋drawRect方法,可以在此自定繪畫 和 動畫
- (void)drawRect:(CGRect)rect {
}

繪畫

//覆蓋drawRect方法,可以在此自定繪畫 和 動畫
- (void)drawRect:(CGRect)rect {

    //一個不透明的Quartz 2D繪畫環境,相當於一個畫布,可以在上面任意繪畫
    CGContextRef context = UIGraphicsGetCurrentContext();

    //設置畫筆粗細
    CGContextSetLineWidth(context, 1);
    //設置畫筆的顏色
    CGContextSetRGBStrokeColor(context, 1, 1, 1, 1);
    //設置填充顏色
    CGContextSetRGBFillColor(context, 1, 0, 0, 1);

    //畫圓
    CGContextAddArc(context, 100, 20, 15, 0, 2*M_PI, 0);
    //繪製路徑
    CGContextDrawPath(context, kCGPathStroke);

    //填充圓,無邊框
    CGContextAddArc(context, 150, 20, 15, 0, 2*M_PI, 1);
    //繪製路徑
    /*
     <#CGPathDrawingMode mode#>
     kCGPathFill,   //填充非繞數規則
     kCGPathEOFill, //表示用奇偶規則
     kCGPathStroke, //路徑
     kCGPathFillStroke, //路徑填充
     kCGPathEOFillStroke    //表示描線
     */
    CGContextDrawPath(context, kCGPathFillStroke);

    //畫線及弧線
    CGContextMoveToPoint(context, 100, 80); //移到開始座標
    CGContextAddLineToPoint(context, 130, 80);
    CGContextDrawPath(context, kCGPathStroke);

    //畫笑臉
    //左邊
    CGContextMoveToPoint(context, 140, 80); //開始座標p1
    CGContextAddArcToPoint(context, 148, 68, 156, 80, 10);
    CGContextStrokePath(context);

    //右邊
    CGContextMoveToPoint(context, 160, 80);
    CGContextAddArcToPoint(context, 168, 68, 176, 80, 10);
    CGContextStrokePath(context);

    //畫矩形
    CGContextStrokeRect(context, CGRectMake(100, 120, 10, 10));
    CGContextFillRect(context, CGRectMake(120, 120, 10, 10));

    //矩形並填充
    CGContextSetLineWidth(context, 2);
    CGContextSetFillColorWithColor(context, [UIColor greenColor].CGColor);  //設置填充顏色
    CGContextSetStrokeColorWithColor(context, [UIColor colorWithRed:34/255.0 green:199/255.0 blue:1 alpha:1].CGColor);  //線框顏色
    //畫方框
    CGContextAddRect(context, CGRectMake(140, 120, 60, 30));
    CGContextDrawPath(context, kCGPathFillStroke);

    //畫扇形
    //以10爲半徑圍繞圓心指定角度扇形
    CGContextMoveToPoint(context, 160, 180);
    CGContextAddArc(context, 160, 180, 10, 0, M_PI/2, 1);
    CGContextClosePath(context);
    CGContextDrawPath(context, kCGPathFillStroke);

    //畫橢圓
    CGContextAddEllipseInRect(context, CGRectMake(200, 180, 60, 15));
    CGContextDrawPath(context, kCGPathFillStroke);

    //畫貝塞爾曲線
    //二次曲線
    CGContextMoveToPoint(context, 120, 300);
    CGContextAddQuadCurveToPoint(context, 190, 310, 120, 390);  //設置貝塞爾曲線的控制點座標和終點座標
    CGContextStrokePath(context);

    //三次曲線
    CGContextMoveToPoint(context, 200, 300);
    CGContextAddCurveToPoint(context, 250, 280, 250, 400, 280, 300);
    CGContextStrokePath(context);

    //圖片
    UIImage *image = [UIImage imageNamed:@"xx1.jpg"];
    [image drawInRect:CGRectMake(60, 400, 200, 200)];

    //iOS7.0新加的API
    NSString *text = @"Rick";
    [text drawAtPoint:CGPointMake(100, 100) withAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:18],NSForegroundColorAttributeName:[UIColor whiteColor]}];


}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章