日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

ios开发图形绘制

發(fā)布時間:2025/7/14 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ios开发图形绘制 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??

????引入了Core Graphices框架功能,演示如何畫線條,文本,改變線條的額粗細,顏色,以及保存和恢復(fù)圖形上下文。

要在一個視圖中進行自定義繪制,我們必須首先獲得當前圖形上下文。圖形上下文(CGContext)是一個繪圖畫布,它存放繪圖信息,如顏色,線條寬度和字體。在調(diào)用drawRect:之前,由UIView配置當前圖形上下文。UIGraphicsGetCurrentContext函數(shù)返回已經(jīng)為當前UIView所配置的圖形上下文。

//獲取當前圖形上下文CGContextRef context = UIGraphicsGetCurrentContext();//保存這個上下文,因為我們需要上下翻轉(zhuǎn)它CGContextSaveGState(context); /*通過調(diào)用CGContextRef中的CGContextTranslateCTM函數(shù)把坐標原點轉(zhuǎn)換到左下角,該函數(shù)有兩個參數(shù),即水平和垂直方 向的變換數(shù)值。然后使用CGContextScaleCTM函數(shù)顛倒y軸,該函數(shù)有兩個參數(shù),即x軸和y軸的變換比例,第一個參數(shù)為1,保 持x軸不變,而第二個參數(shù)為-1,表示顛倒y軸*/ //向下移動該上下文坐標原點CGContextTranslateCTM(context, 0, self.view.bounds.size.height);CGContextScaleCTM(context, 1.0, -1.0); //向上翻轉(zhuǎn)圖像上下文//以剩余時間來創(chuàng)建一個字符串NSString *str = [NSString stringWithFormat:@"Time remaining:%i seconds", timeLeft];//選擇字體為16pt HelveticaCGContextSelectFont(context, "Helvetica", 16, kCGEncodingMacRoman);CGContextSetTextDrawingMode(context, kCGTextFill); //設(shè)置繪制模式//設(shè)置文本顏色為黑色CGContextSetRGBFillColor(context, 0.0, 0.0, 0.0, 1.0);//轉(zhuǎn)換str為一個C 字符串并顯示它CGContextShowTextAtPoint(context, 10.0, 10.0, [str cStringUsingEncoding:[NSString defaultCStringEncoding]], str.length);CGContextRestoreGState(context); //恢復(fù)上下文//如果炮彈在屏幕上if (cannonballOnScreen) {//創(chuàng)建矩形并在其中繪制炮彈CGRect cannonballRect = CGRectMake(cannonball.x, cannonball.y, CANNON_BASE_RADIUS * 2, CANNON_BASE_RADIUS * 2);UIImage *image = [UIImage imageNamed:@"cannonball80.png"];//繪制圖片到矩形中CGContextDrawImage(context, cannonballRect, image.CGImage);}//繪制加農(nóng)炮炮管//移動加農(nóng)炮底座到視圖中間的位置CGContextMoveToPoint(context, 0 , self.view.frame.size.height / 2);//添加一根到加農(nóng)炮炮管終端的線條CGContextAddLineToPoint(context, barrelEnd.x , barrelEnd.y);CGContextSetLineWidth(context, 20); //設(shè)置線條粗細CGContextSetRGBStrokeColor(context, 0.0, 0.0, 0.0, 1.0); //黑色CGContextStrokePath(context); //繪制線條//為加農(nóng)炮底座創(chuàng)建矩形CGRect cannonBase = CGRectMake(0, self.view.frame.size.height / 2 - CANNON_BASE_RADIUS, CANNON_BASE_RADIUS, CANNON_BASE_RADIUS * 2);//加載加農(nóng)炮底座圖片UIImage *baseImage = [UIImage imageNamed:@"cannon_base.png"];//把加農(nóng)炮底座圖片繪制到矩形中CGContextDrawImage(context, cannonBase, baseImage.CGImage);//在攔截器兩個端點之間添加一根線CGContextMoveToPoint(context, blocker.start.x, blocker.start.y);CGContextAddLineToPoint(context, blocker.end.x, blocker.end.y);CGContextSetLineWidth(context, LINE_WIDTH);CGContextStrokePath(context); //繪制線條//計算目標每個分段的長度float pieceLength = (TARGET_END - TARGET_BEGINING) / TARGET_PIECES;//移到目標起點CGContextMoveToPoint(context, target.start.x, target.start.y);//繪制每個目標分段for (int i = 1; i <= TARGET_PIECES; i++){//相鄰分段以黃、藍色區(qū)分開if(i % 2 == 0){CGContextSetRGBStrokeColor(context, 1, 1, 0, 1);}else {CGContextSetRGBStrokeColor(context, 0, 0, 0.5, 1);}//移到下一個分段的端點CGContextMoveToPoint(context, target.end.x, target.start.y + pieceLength * (i - 1));//如果這個分段還沒有被擊中if(!targetPieceHit[i - 1]){//為該分段添加一條線CGContextAddLineToPoint(context, target.end.x, target.start.y + pieceLength * i);CGContextStrokePath(context); //繪制分段}}

轉(zhuǎn)載于:https://my.oschina.net/mjRao/blog/71457

總結(jié)

以上是生活随笔為你收集整理的ios开发图形绘制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。