ios view 畫圖

來源:互聯網
上載者:User

轉自:http://blog.sina.com.cn/s/blog_79a120e501018c2n.html


UIView 的方法:

- (void)drawRect:(CGRect)rect

擷取當前context:

 

CGContextRef context =UIGraphicsGetCurrentContext();

擷取當前bounds的起點和size:

 

self.bounds.origin

 

self.bounds.size

設定畫圖的線寬和填充線的顏色:

 

CGContextSetLineWidth(context, 5.0);

[[UIColor blueColor]setStroke];

畫圖另外調用方法:

在用context之前需要push下,最後再pop,這樣就不會破壞外面的context,隨便我在裡面做什麼。

 

UIGraphicsPushContext(context);

CGContextBeginPath(context);

CGContextAddArc(context, p.x,p.y, radius, 0, 2*M_PI,YES);

//CGContextAddCurveToPoint(context,mouthCP1.x, mouthCP1.y,mouthCP2.x, mouthCP2.y,//mouthEnd.x, mouthEnd.y);都是一樣的套路。。

CGContextStrokePath(context);

UIGraphicsPopContext();


繼承uiview,將uiview變成子view。UIBezierPath類畫圖。是用矩形座標畫圖的

- (void)drawRect:(CGRect)rect

{

//矩形畫圖地區

   
CGRect aRectangle = CGRectMake(0.0,
0.0, 40.0, 40.0);

//定義一個矩形路徑

   UIBezierPath *path =[UIBezierPath bezierPathWithRect:aRectangle];

//將矩形路徑畫出來

    [pathstroke];

//在地區中畫一個橢圓

   path = [UIBezierPathbezierPathWithOvalInRect:aRectangle];

//橢圓填充

    [pathfill];

//定義一個開始路徑

   UIBezierPath *startPath= [UIBezierPath bezierPath];

    //開始畫五角星

    [startPathmoveToPoint:CGPointMake(40.0,
0.0)];

   [startPath addLineToPoint:CGPointMake(30.0,
30.0)];

   [startPath addLineToPoint:CGPointMake(0.0,
30.0)];

   [startPath addLineToPoint:CGPointMake(20.0,
50.0)];

   [startPath addLineToPoint:CGPointMake(10.0,
80.0)];

   [startPath addLineToPoint:CGPointMake(40.0,
60.0)];

   [startPath addLineToPoint:CGPointMake(70.0,
80.0)];

   [startPath addLineToPoint:CGPointMake(60.0,
50.0)];

   [startPath addLineToPoint:CGPointMake(80.0,
30.0)];

   [startPath addLineToPoint:CGPointMake(50.0,
30.0)];

    [startPathclosePath];

//擷取當前環境

   CGContextRef context= UIGraphicsGetCurrentContext();

//儲存當前環境,便於以後恢複

   CGContextSaveGState(context);

//將座標的起點變成(100,100)

   CGContextTranslateCTM(context,
100, 100);

//將當前的顏色變成黃色

   UIColor* fillColor =[UIColor yellowColor];

    [fillColorsetFill];

//五角星填充為黃色

    [startPathfill];

   //將座標起點變成(100,100)開始,注意:這裡是當前的(100,100)的相對位移,所以相對整個view是(200,200)

   CGContextTranslateCTM(context,
100, 100);

//將座標旋轉45度

   CGContextRotateCTM(context,
3.14/4);

//將使用中色彩變成綠色

    fillColor =[UIColor
greenColor];

    [fillColorsetFill];

//將五角星的輪廓畫上顏色

    [startPathstroke];

//五角星填充

    [startPathfill];

//恢複context,當然,是恢複成之前儲存的那個   

   CGContextRestoreGState(context);

//將當前context儲存

   CGContextSaveGState(context);

   CGContextTranslateCTM(context,
50, 250);

    [startPathfill];

   CGContextRestoreGState(context);

   

}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.