zoukankan      html  css  js  c++  java
  • 拷贝别人的drawRect绘图分类用途、用法很全。

    拷贝被人的drawRect绘图分类用途,用法很全。留着、供用时参考

    // Only override drawRect: if you perform custom drawing.  

    // An empty implementation adversely affects performance during animation.  

    - (void)drawRect:(CGRect)rect  

    {  

        CGContextRef context = UIGraphicsGetCurrentContext();  

    /*NO.1画一条线 

           

         CGContextSetRGBStrokeColor(context, 0.5, 0.5, 0.5, 0.5);//线条颜色 

         CGContextMoveToPoint(context, 20, 20); 

         CGContextAddLineToPoint(context, 200,20); 

         CGContextStrokePath(context); 

        */  

    /*NO.2写文字 

           

        CGContextSetLineWidth(context, 1.0); 

        CGContextSetRGBFillColor (context, 0.5, 0.5, 0.5, 0.5); 

        UIFont  *font = [UIFont boldSystemFontOfSize:18.0]; 

        [@"公司:北京中软科技股份有限公司 部门:ERP事业部 姓名:McLiang" drawInRect:CGRectMake(20, 40, 280, 300) withFont:font]; 

        */  

    /*NO.3画一个正方形图形 没有边框 

      

        CGContextSetRGBFillColor(context, 0, 0.25, 0, 0.5); 

        CGContextFillRect(context, CGRectMake(2, 2, 270, 270)); 

        CGContextStrokePath(context); 

        */  

    /*NO.4画正方形边框 

          

        CGContextSetRGBStrokeColor(context, 0.5, 0.5, 0.5, 0.5);//线条颜色 

        CGContextSetLineWidth(context, 2.0); 

        CGContextAddRect(context, CGRectMake(2, 2, 270, 270)); 

        CGContextStrokePath(context); 

        */  

    /*NO.5画方形背景颜色 

           

        CGContextTranslateCTM(context, 0.0f, self.bounds.size.height); 

        CGContextScaleCTM(context, 1.0f, -1.0f); 

        UIGraphicsPushContext(context); 

        CGContextSetLineWidth(context,320); 

        CGContextSetRGBStrokeColor(context, 250.0/255, 250.0/255, 210.0/255, 1.0); 

        CGContextStrokeRect(context, CGRectMake(0, 0, 320, 460)); 

        UIGraphicsPopContext(); 

        */  

    /*NO.6椭圆 

           

         CGRect aRect= CGRectMake(80, 80, 160, 100); 

         CGContextSetRGBStrokeColor(context, 0.6, 0.9, 0, 1.0); 

         CGContextSetLineWidth(context, 3.0); 

         CGContextAddEllipseInRect(context, aRect); //椭圆 

         CGContextDrawPath(context, kCGPathStroke); 

        */  

    /*NO.7 

        CGContextBeginPath(context); 

        CGContextSetRGBStrokeColor(context, 0, 0, 1, 1); 

        CGContextMoveToPoint(context, 100, 100); 

        CGContextAddArcToPoint(context, 50, 100, 50, 150, 50); 

        CGContextStrokePath(context); 

        */  

    /*NO.8渐变 

        CGContextClip(context); 

        CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB(); 

        CGFloat colors[] = 

        { 

            204.0 / 255.0, 224.0 / 255.0, 244.0 / 255.0, 1.00, 

            29.0 / 255.0, 156.0 / 255.0, 215.0 / 255.0, 1.00, 

            0.0 / 255.0,  50.0 / 255.0, 126.0 / 255.0, 1.00, 

        }; 

        CGGradientRef gradient = CGGradientCreateWithColorComponents 

        (rgb, colors, NULL, sizeof(colors)/(sizeof(colors[0])*4)); 

        CGColorSpaceRelease(rgb); 

        CGContextDrawLinearGradient(context, gradient,CGPointMake 

                                    (0.0,0.0) ,CGPointMake(0.0,self.frame.size.height), 

                                    kCGGradientDrawsBeforeStartLocation); 

         */  

    /* NO.9四条线画一个正方形 

        //画线 

            UIColor *aColor = [UIColor colorWithRed:0 green:1.0 blue:0 alpha:0]; 

        CGContextSetRGBStrokeColor(context, 1.0, 0, 0, 1.0); 

           CGContextSetFillColorWithColor(context, aColor.CGColor); 

        CGContextSetLineWidth(context, 4.0); 

        CGPoint aPoints[5]; 

        aPoints[0] =CGPointMake(60, 60); 

        aPoints[1] =CGPointMake(260, 60); 

        aPoints[2] =CGPointMake(260, 300); 

        aPoints[3] =CGPointMake(60, 300); 

        aPoints[4] =CGPointMake(60, 60); 

        CGContextAddLines(context, aPoints, 5); 

        CGContextDrawPath(context, kCGPathStroke); //开始画线 

         */  

    /*  NO.10 

        UIColor *aColor = [UIColor colorWithRed:0 green:1.0 blue:0 alpha:0]; 

        CGContextSetRGBStrokeColor(context, 1.0, 0, 0, 1.0); 

        CGContextSetFillColorWithColor(context, aColor.CGColor); 

        //椭圆 

        CGRect aRect= CGRectMake(80, 80, 160, 100); 

        CGContextSetRGBStrokeColor(context, 0.6, 0.9, 0, 1.0); 

        CGContextSetLineWidth(context, 3.0); 

          CGContextSetFillColorWithColor(context, aColor.CGColor); 

           CGContextAddRect(context, rect); //矩形 

        CGContextAddEllipseInRect(context, aRect); //椭圆 

        CGContextDrawPath(context, kCGPathStroke); 

         */  

    /*  NO.11 

         画一个实心的圆 

       

         CGContextFillEllipseInRect(context, CGRectMake(95, 95, 100.0, 100)); 

        */  

    /*NO.12 

         画一个菱形 

        CGContextSetLineWidth(context, 2.0); 

        CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor); 

        CGContextMoveToPoint(context, 100, 100); 

        CGContextAddLineToPoint(context, 150, 150); 

        CGContextAddLineToPoint(context, 100, 200); 

        CGContextAddLineToPoint(context, 50, 150); 

        CGContextAddLineToPoint(context, 100, 100); 

        CGContextStrokePath(context); 

         */  

    /*NO.13 画矩形 

        CGContextSetLineWidth(context, 2.0); 

      

        CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor); 

      

        CGRect rectangle = CGRectMake(60,170,200,80); 

      

        CGContextAddRect(context, rectangle); 

          

        CGContextStrokePath(context); 

         */  

    /*椭圆 

        CGContextSetLineWidth(context, 2.0); 

      

        CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor); 

      

        CGRect rectangle = CGRectMake(60,170,200,80); 

      

        CGContextAddEllipseInRect(context, rectangle); 

          

        CGContextStrokePath(context); 

         */  

    /*用红色填充了一段路径: 

          

        CGContextMoveToPoint(context, 100, 100); 

        CGContextAddLineToPoint(context, 150, 150); 

        CGContextAddLineToPoint(context, 100, 200); 

        CGContextAddLineToPoint(context, 50, 150); 

        CGContextAddLineToPoint(context, 100, 100); 

        CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor); 

        CGContextFillPath(context); 

        */  

    /*填充一个蓝色边的红色矩形 

        CGContextSetLineWidth(context, 2.0); 

        CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor); 

        CGRect rectangle = CGRectMake(60,170,200,80); 

        CGContextAddRect(context, rectangle); 

        CGContextStrokePath(context); 

        CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor); 

        CGContextFillRect(context, rectangle); 

        */  

    /*画弧 

         //弧线的是通过指定两个切点,还有角度,调用CGContextAddArcToPoint()绘制 

        CGContextSetLineWidth(context, 2.0); 

        CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor); 

        CGContextMoveToPoint(context, 100, 100); 

        CGContextAddArcToPoint(context, 100,200, 300,200, 100); 

        CGContextStrokePath(context); 

        */  

    /* 

        绘制贝兹曲线 

        //贝兹曲线是通过移动一个起始点,然后通过两个控制点,还有一个中止点,调用CGContextAddCurveToPoint() 函数绘制 

        CGContextSetLineWidth(context, 2.0); 

      

        CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor); 

      

        CGContextMoveToPoint(context, 10, 10); 

      

        CGContextAddCurveToPoint(context, 0, 50, 300, 250, 300, 400); 

          

        CGContextStrokePath(context); 

         */  

    /*绘制二次贝兹曲线 

          

          CGContextSetLineWidth(context, 2.0); 

      

          CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor); 

      

          CGContextMoveToPoint(context, 10, 200); 

      

          CGContextAddQuadCurveToPoint(context, 150, 10, 300, 200); 

          

          CGContextStrokePath(context); 

         */  

    /*绘制虚线 

        CGContextSetLineWidth(context, 5.0); 

      

        CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor); 

      

        CGFloat dashArray[] = {2,6,4,2}; 

      

        CGContextSetLineDash(context, 3, dashArray, 4);//跳过3个再画虚线,所以刚开始有6-(3-2)=5个虚点 

          

        CGContextMoveToPoint(context, 10, 200); 

          

        CGContextAddQuadCurveToPoint(context, 150, 10, 300, 200); 

          

        CGContextStrokePath(context); 

        */  

    /*绘制图片 

        NSString* imagePath = [[NSBundle mainBundle] pathForResource:@"dog" ofType:@"png"]; 

        UIImage* myImageObj = [[UIImage alloc] initWithContentsOfFile:imagePath]; 

        //[myImageObj drawAtPoint:CGPointMake(0, 0)]; 

        [myImageObj drawInRect:CGRectMake(0, 0, 320, 480)]; 

      

        NSString *s = @"我的小狗"; 

      

        [s drawAtPoint:CGPointMake(100, 0) withFont:[UIFont systemFontOfSize:34.0]]; 

    */  

    /* 

        NSString *path = [[NSBundle mainBundle] pathForResource:@"dog" ofType:@"png"]; 

        UIImage *img = [UIImage imageWithContentsOfFile:path]; 

        CGImageRef image = img.CGImage; 

        CGContextSaveGState(context); 

        CGRect touchRect = CGRectMake(0, 0, img.size.width, img.size.height); 

        CGContextDrawImage(context, touchRect, image); 

        CGContextRestoreGState(context); 

       */  

    /*NSString *path = [[NSBundle mainBundle] pathForResource:@"dog" ofType:@"png"]; 

        UIImage *img = [UIImage imageWithContentsOfFile:path]; 

        CGImageRef image = img.CGImage; 

        CGContextSaveGState(context); 

      

        CGContextRotateCTM(context, M_PI); 

        CGContextTranslateCTM(context, -img.size.width, -img.size.height); 

      

        CGRect touchRect = CGRectMake(0, 0, img.size.width, img.size.height); 

        CGContextDrawImage(context, touchRect, image); 

        CGContextRestoreGState(context);*/  

    /* 

        NSString *path = [[NSBundle mainBundle] pathForResource:@"dog" ofType:@"png"]; 

        UIImage *img = [UIImage imageWithContentsOfFile:path]; 

        CGImageRef image = img.CGImage; 

          

        CGContextSaveGState(context); 

      

        CGAffineTransform myAffine = CGAffineTransformMakeRotation(M_PI); 

        myAffine = CGAffineTransformTranslate(myAffine, -img.size.width, -img.size.height); 

        CGContextConcatCTM(context, myAffine); 

      

        CGContextRotateCTM(context, M_PI); 

        CGContextTranslateCTM(context, -img.size.width, -img.size.height); 

      

        CGRect touchRect = CGRectMake(0, 0, img.size.width, img.size.height); 

        CGContextDrawImage(context, touchRect, image); 

        CGContextRestoreGState(context); 

    */  

    }  

  • 相关阅读:
    P1268 树的重量
    P2419 [USACO08JAN]牛大赛Cow Contest
    P1306 斐波那契公约数
    P2905 [USACO08OPEN]农场危机Crisis on the Farm
    P1081 开车旅行
    P2906 [USACO08OPEN]牛的街区Cow Neighborhoods
    P1550 [USACO08OCT]打井Watering Hole
    P2746 [USACO5.3]校园网Network of Schools
    P1613 跑路
    【BZOJ4868】期末考试(整数三分)
  • 原文地址:https://www.cnblogs.com/zhou--fei/p/4970704.html
Copyright © 2011-2022 走看看