iOS视觉(四): 精彩常见的图元绘制指南
2023-11-10 20:52:05
在 iOS 中绘制图形:从像素到甜甜圈
准备踏上一段视觉之旅,探索在 iOS 中绘制基本图元的艺术。从谦逊的点到令人垂涎的甜甜圈,我们将引导您完成每一个步骤,让您掌握构建令人惊叹图形的技巧。
点亮屏幕:绘制点
点是图形的基础,在 iOS 中绘制它们轻而易举。使用 CGContextAddEllipseInRect
函数,您可以定义一个包含点的矩形。记住,矩形应该足够小,这样点才不会显得太大。
连接点:绘制线
绘制线使用 CGContextMoveToPoint
和 CGContextAddLineToPoint
函数。前者指定线的起点,后者指定终点。最后,用 CGContextStrokePath
函数绘制线。
闭合曲线:绘制线环
线环是一系列连接在一起的线段,形成一个封闭的形状。可以用 CGContextAddArc
或 CGContextAddEllipseInRect
函数绘制线环。CGContextAddArc
定义一个圆弧,而 CGContextAddEllipseInRect
定义一个椭圆。用 CGContextStrokePath
绘制线环。
展现六边形:绘制六边形
六边形是一个六边形规则多边形。用 CGContextAddLines
函数绘制六边形,它接收一个点数组,指定六边形的顶点。用 CGContextClosePath
闭合路径,用 CGContextStrokePath
绘制六边形。
环绕中心:绘制环带
环带是一个具有两个同心圆的形状,内圆半径小于外圆半径。使用 CGContextAddArc
函数定义两个圆弧,一个内圆弧,一个外圆弧。用 CGContextStrokePath
绘制环带。
甜蜜时刻:绘制甜甜圈
没错,您可以在 iOS 中绘制甜甜圈!甜甜圈本质上是一个带孔的环带。用 CGContextAddArc
定义外圆弧,再用 CGContextAddArc
定义内圆弧。用 CGContextEOFillPath
填充甜甜圈内部,用 CGContextStrokePath
绘制甜甜圈轮廓。
切换图像
要显示图元,需要提交一个批次类,其中包含绘制命令。在渲染回调中,使用 CGContextDrawPath
函数绘制图元。要切换图像,只需通过空格键重新提交批次类。
探索矩阵堆栈
矩阵堆栈跟踪当前图形变换。绘制时,可以对矩阵堆栈进行平移、缩放或旋转等变换。完成后,用 CGContextRestoreGState
函数恢复之前的变换。
常见问题解答
1. 我可以在 iOS 中绘制任何形状吗?
是的,掌握了这些基本图元后,您可以组合它们创建更复杂的形状。
2. 如何更改图元颜色?
在绘制图元之前,使用 CGContextSetStrokeColor
或 CGContextSetFillColor
函数设置颜色。
3. 如何获得更平滑的线条?
使用 CGContextSetLineWidth
函数设置线条宽度,使其更细,以获得更平滑的外观。
4. 如何绘制填充形状?
使用 CGContextFillPath
函数填充形状,而不是 CGContextStrokePath
。
5. 我可以在我的应用程序中使用这些图元吗?
当然!这些图元是构建各种图形界面元素的强大工具,例如按钮、图表和游戏。
代码示例
import UIKit
class MyView: UIView {
override func draw(_ rect: CGRect) {
let context = UIGraphicsGetCurrentContext()!
// 点
context.addEllipse(in: CGRect(x: 50, y: 50, width: 10, height: 10))
// 线
context.move(to: CGPoint(x: 100, y: 50))
context.addLine(to: CGPoint(x: 150, y: 100))
// 线环
context.addArc(center: CGPoint(x: 200, y: 50), radius: 25, startAngle: 0, endAngle: 2 * .pi, clockwise: true)
// 六边形
let hexagonPoints = [
CGPoint(x: 250, y: 50),
CGPoint(x: 300, y: 75),
CGPoint(x: 300, y: 125),
CGPoint(x: 250, y: 150),
CGPoint(x: 200, y: 125),
CGPoint(x: 200, y: 75)
]
context.addLines(between: hexagonPoints)
// 环带
context.addArc(center: CGPoint(x: 350, y: 50), radius: 25, startAngle: 0, endAngle: 2 * .pi, clockwise: true)
context.addArc(center: CGPoint(x: 350, y: 50), radius: 15, startAngle: 0, endAngle: 2 * .pi, clockwise: true)
// 甜甜圈
context.addArc(center: CGPoint(x: 450, y: 50), radius: 25, startAngle: 0, endAngle: 2 * .pi, clockwise: true)
context.addArc(center: CGPoint(x: 450, y: 50), radius: 15, startAngle: 0, endAngle: 2 * .pi, clockwise: true)
context.fillPath()
context.strokePath()
}
}
结论
掌握 iOS 中绘制图形的艺术,解锁无限的视觉可能性。从简单的点到令人惊叹的甜甜圈,利用这些基本图元创建令人难忘的图形体验。在您的应用程序中释放您的创造力,让您的界面焕发活力!