OS X 上的 Swift:如何访问当前 CGContext 以便在 -[NSView drawRect] 中绘图

swift

1个回答

写回答

呼呼呼1

2025-06-27 12:00

+ 关注

macOS
macOS

macOS 上使用 Swift 进行图形绘制的过程中,我们常常需要在自定义的 NSViewdrawRect(_:) 方法中获取当前的 CGContext 上下文,以便进行绘图操作。在这篇文章中,我们将探讨如何访问当前的 CGContext,并提供一个简单的案例代码来演示这个过程。

获取当前 CGContext

macOS 的绘图系统中,每个视图都拥有一个与之相关联的 CGContext 上下文,我们可以通过在视图的 drawRect(_:) 方法中访问 NSGraphicsContext.current?.cgContext 属性来获取当前的上下文。

Swift

override func drawRect(_ dirtyRect: NSRect) {

super.drawRect(dirtyRect)

guard let context = NSGraphicsContext.current?.cgContext else {

return

}

// 在这里进行绘图操作

}

上述代码中,我们首先通过 NSGraphicsContext.current 获取当前的图形上下文,然后通过 .cgContext 属性将其转换为 CGContext 类型。这样我们就可以在 drawRect(_:) 方法中使用这个上下文进行绘图操作了。

绘制示例

下面我们来演示一个简单的绘图示例,使用获取到的 CGContext 在视图中绘制一个矩形和一个圆形。

Swift

override func drawRect(_ dirtyRect: NSRect) {

super.drawRect(dirtyRect)

guard let context = NSGraphicsContext.current?.cgContext else {

return

}

// 绘制矩形

context.setFillColor(NSColor.red.cgColor)

context.fill(CGRect(x: 50, y: 50, width: 200, height: 100))

// 绘制圆形

context.setFillColor(NSColor.blue.cgColor)

context.fillEllipse(in: CGRect(x: 100, y: 200, width: 100, height: 100))

}

在上述代码中,我们首先设置填充颜色为红色,然后使用 context.fill(_:) 方法绘制一个位于 (50, 50) 坐标,宽度为 200,高度为 100 的矩形。接着,我们设置填充颜色为蓝色,使用 context.fillEllipse(in:) 方法绘制一个位于 (100, 200) 坐标,宽度为 100,高度为 100 的圆形。

通过以上操作,我们可以在自定义的 NSView 中使用获取到的 CGContext 进行绘图操作,实现自己的图形效果。

在本文中,我们介绍了如何在 macOS 上使用 Swift 访问当前的 CGContext,并提供了一个简单的绘图示例。通过获取到的上下文,我们可以在自定义的 NSViewdrawRect(_:) 方法中进行绘图操作,实现自己想要的图形效果。希望本文能帮助你更好地理解如何在 macOS 上使用 Swift 进行图形绘制。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号