iOS画图及二维码扫描Demo

– (void)drawRect:(CGRect)rect {

    //初始化画板

    CGContextRef context = UIGraphicsGetCurrentContext();

    //画一个矩形,长宽相等,直径等于view的宽

    CGContextAddRect(context, CGRectMake(0, 0, rect.size.width, rect.size.width));

    //设置边框的宽度

    CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 5.0);

    //红色填充框内

    [[UIColorredColor] setFill];

    //蓝色填充边框颜色

    [[UIColorblueColor] setStroke];

    //绘制路径path

    CGContextDrawPath(context,kCGPathFillStroke);

    

    //****利用path进行绘制三角形****//

    //启动绘制

    CGContextBeginPath(context);

    //设置起点

    CGContextMoveToPoint(context,rect.size.width / 2,0);

    //第二个

    CGContextAddLineToPoint(context,0, rect.size.height);

    //第三个

    CGContextAddLineToPoint(context,rect.size.width, rect.size.height);

     //路径结束标志,不写默认封闭

    CGContextClosePath(context);

    [[UIColorpurpleColor] setFill];

    //只填充线内图,不填充边框

    CGContextDrawPath(context,kCGPathFill);

    

    //绘制一个园

    CGContextAddEllipseInRect(context, CGRectMake(20, 20, rect.size.width – 40,rect.size.height – 40));

    //通过这个圆,将view掏空

    //CGContextSetBlendMode(context,kCGBlendModeClear);

    CGContextDrawPath(context,kCGPathFillStroke);

    

    

    //画一条线

    CGPoint LinePoints[2];

    LinePoints[0] = CGPointMake(rect.size.width / 2, 0);

    LinePoints[1] = CGPointMake(rect.size.width / 2, rect.size.height);

    //参数,两个线的坐标,2属于两点

    CGContextAddLines(context, LinePoints, 2);

    //设置线颜色

    [[UIColororangeColor]setStroke];

    //设置线宽

    CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 1.0);

    CGContextDrawPath(context,kCGPathStroke);

    // Drawing code

}

//drawRect中写字:

self.dic = [[NSDictionary alloc]initWithObjectsAndKeys:
             [UIFont systemFontOfSize:kScaleForLength(250)],NSFontAttributeName,
             [UIColor whiteColor],NSForegroundColorAttributeName,
             nil]
- (void)drawRect:(CGRect)rect {
    self.text = @"drawrect";
    if (self.text.length!=0) {
        
        [self.text drawAtPoint:CGPointMake(kScaleForLength(30), -kScaleForLength(50)) withAttributes:self.dic];
 
    }
    // Drawing code
}

二维码mask层DEMO:

//画四条折现图,然后将背景设置为黑色,透明度为0.2,然后画一个正方形盖上边,最后将正方形掏空。
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
    // Drawing code
    //background
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextAddRect(context, CGRectMake(0, 0, rect.size.width, rect.size.height - 0));
    CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 0.0);
    [[[UIColor blackColor]colorWithAlphaComponent:0.3] setFill];
    CGContextDrawPath(context,kCGPathFill);
    //
    CGFloat smallRectY = (rect.size.height - rect.size.width / 3 * 2) / 2;
    //line by eight - first
    //config
    [CWMainColor setStroke];
    CGContextSetLineWidth(context, 4.0);
    CGFloat lineLength = 40;
    CGPoint LinePoints[3];
    LinePoints[0] = CGPointMake(rect.size.width / 3 / 2, smallRectY + lineLength);
    LinePoints[1] = CGPointMake(rect.size.width / 3 / 2, smallRectY);
    LinePoints[2] = CGPointMake(rect.size.width / 3 / 2 + lineLength, smallRectY);
    CGContextAddLines(context, LinePoints, 3);
    //second
    CGFloat horSpace = rect.size.width / 3 / 2;
    CGPoint LinePoints_second[3];
    LinePoints_second[0] = CGPointMake(rect.size.width - horSpace - lineLength, smallRectY);
    LinePoints_second[1] = CGPointMake(rect.size.width - horSpace, smallRectY);
    LinePoints_second[2] = CGPointMake(rect.size.width - horSpace, smallRectY + lineLength);
    CGContextAddLines(context, LinePoints_second, 3);
    //third
    CGFloat smallReactMaxY = smallRectY + rect.size.width / 3 * 2;
    CGPoint LinePoints_third[3];
    LinePoints_third[0] = CGPointMake(horSpace + lineLength, smallReactMaxY);
    LinePoints_third[1] = CGPointMake(horSpace, smallReactMaxY);
    LinePoints_third[2] = CGPointMake(horSpace, smallReactMaxY - lineLength);
    CGContextAddLines(context, LinePoints_third, 3);
    //four
    CGPoint LinePoints_four[3];
    LinePoints_four[0] = CGPointMake(rect.size.width - horSpace - lineLength, smallReactMaxY);
    LinePoints_four[1] = CGPointMake(rect.size.width - horSpace, smallReactMaxY);
    LinePoints_four[2] = CGPointMake(rect.size.width - horSpace, smallReactMaxY - lineLength);
    CGContextAddLines(context, LinePoints_four, 3);
    //
    CGContextDrawPath(context,kCGPathStroke);
    //QRContent view
    CGContextAddRect(context, CGRectMake(rect.size.width / 3 / 2, smallRectY, rect.size.width / 3 * 2, rect.size.width / 3 * 2));
    CGContextSetBlendMode(context,kCGBlendModeClear);
    CGContextDrawPath(context,kCGPathFill);
}

Leave a Reply

Required fields are marked *