返回

iOS视觉(四): 精彩常见的图元绘制指南

IOS

在 iOS 中绘制图形:从像素到甜甜圈

准备踏上一段视觉之旅,探索在 iOS 中绘制基本图元的艺术。从谦逊的点到令人垂涎的甜甜圈,我们将引导您完成每一个步骤,让您掌握构建令人惊叹图形的技巧。

点亮屏幕:绘制点

点是图形的基础,在 iOS 中绘制它们轻而易举。使用 CGContextAddEllipseInRect 函数,您可以定义一个包含点的矩形。记住,矩形应该足够小,这样点才不会显得太大。

连接点:绘制线

绘制线使用 CGContextMoveToPointCGContextAddLineToPoint 函数。前者指定线的起点,后者指定终点。最后,用 CGContextStrokePath 函数绘制线。

闭合曲线:绘制线环

线环是一系列连接在一起的线段,形成一个封闭的形状。可以用 CGContextAddArcCGContextAddEllipseInRect 函数绘制线环。CGContextAddArc 定义一个圆弧,而 CGContextAddEllipseInRect 定义一个椭圆。用 CGContextStrokePath 绘制线环。

展现六边形:绘制六边形

六边形是一个六边形规则多边形。用 CGContextAddLines 函数绘制六边形,它接收一个点数组,指定六边形的顶点。用 CGContextClosePath 闭合路径,用 CGContextStrokePath 绘制六边形。

环绕中心:绘制环带

环带是一个具有两个同心圆的形状,内圆半径小于外圆半径。使用 CGContextAddArc 函数定义两个圆弧,一个内圆弧,一个外圆弧。用 CGContextStrokePath 绘制环带。

甜蜜时刻:绘制甜甜圈

没错,您可以在 iOS 中绘制甜甜圈!甜甜圈本质上是一个带孔的环带。用 CGContextAddArc 定义外圆弧,再用 CGContextAddArc 定义内圆弧。用 CGContextEOFillPath 填充甜甜圈内部,用 CGContextStrokePath 绘制甜甜圈轮廓。

切换图像

要显示图元,需要提交一个批次类,其中包含绘制命令。在渲染回调中,使用 CGContextDrawPath 函数绘制图元。要切换图像,只需通过空格键重新提交批次类。

探索矩阵堆栈

矩阵堆栈跟踪当前图形变换。绘制时,可以对矩阵堆栈进行平移、缩放或旋转等变换。完成后,用 CGContextRestoreGState 函数恢复之前的变换。

常见问题解答

1. 我可以在 iOS 中绘制任何形状吗?
是的,掌握了这些基本图元后,您可以组合它们创建更复杂的形状。

2. 如何更改图元颜色?
在绘制图元之前,使用 CGContextSetStrokeColorCGContextSetFillColor 函数设置颜色。

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 中绘制图形的艺术,解锁无限的视觉可能性。从简单的点到令人惊叹的甜甜圈,利用这些基本图元创建令人难忘的图形体验。在您的应用程序中释放您的创造力,让您的界面焕发活力!