日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ios开发图形绘制

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

為什么80%的碼農都做不了架構師?>>> ??

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

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

//獲取當前圖形上下文CGContextRef context = UIGraphicsGetCurrentContext();//保存這個上下文,因為我們需要上下翻轉它CGContextSaveGState(context); /*通過調用CGContextRef中的CGContextTranslateCTM函數把坐標原點轉換到左下角,該函數有兩個參數,即水平和垂直方 向的變換數值。然后使用CGContextScaleCTM函數顛倒y軸,該函數有兩個參數,即x軸和y軸的變換比例,第一個參數為1,保 持x軸不變,而第二個參數為-1,表示顛倒y軸*/ //向下移動該上下文坐標原點CGContextTranslateCTM(context, 0, self.view.bounds.size.height);CGContextScaleCTM(context, 1.0, -1.0); //向上翻轉圖像上下文//以剩余時間來創建一個字符串NSString *str = [NSString stringWithFormat:@"Time remaining:%i seconds", timeLeft];//選擇字體為16pt HelveticaCGContextSelectFont(context, "Helvetica", 16, kCGEncodingMacRoman);CGContextSetTextDrawingMode(context, kCGTextFill); //設置繪制模式//設置文本顏色為黑色CGContextSetRGBFillColor(context, 0.0, 0.0, 0.0, 1.0);//轉換str為一個C 字符串并顯示它CGContextShowTextAtPoint(context, 10.0, 10.0, [str cStringUsingEncoding:[NSString defaultCStringEncoding]], str.length);CGContextRestoreGState(context); //恢復上下文//如果炮彈在屏幕上if (cannonballOnScreen) {//創建矩形并在其中繪制炮彈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);}//繪制加農炮炮管//移動加農炮底座到視圖中間的位置CGContextMoveToPoint(context, 0 , self.view.frame.size.height / 2);//添加一根到加農炮炮管終端的線條CGContextAddLineToPoint(context, barrelEnd.x , barrelEnd.y);CGContextSetLineWidth(context, 20); //設置線條粗細CGContextSetRGBStrokeColor(context, 0.0, 0.0, 0.0, 1.0); //黑色CGContextStrokePath(context); //繪制線條//為加農炮底座創建矩形CGRect cannonBase = CGRectMake(0, self.view.frame.size.height / 2 - CANNON_BASE_RADIUS, CANNON_BASE_RADIUS, CANNON_BASE_RADIUS * 2);//加載加農炮底座圖片UIImage *baseImage = [UIImage imageNamed:@"cannon_base.png"];//把加農炮底座圖片繪制到矩形中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++){//相鄰分段以黃、藍色區分開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); //繪制分段}}

轉載于:https://my.oschina.net/mjRao/blog/71457

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。