objective-c - Objective-C/Cocoa 中的 BitBlt() 等价物

标签 objective-c cocoa macos graphics bitblt

几年前,我用 Visual Basic 制作了一款滚动平铺 2D 视频游戏。我正在将它翻译成适用于 Mac 的 Cocoa。有没有一个框架可以让我使用 BitBlt ?或者是否有不使用 OpenGL 的 BitBlt 等效项?谢谢!

最佳答案

正如 Matt 提到的,您可能需要 CGContextDrawImageCGContextSetBlendMode

首先,您需要从图像数据创建一个CGImageRef。您可以通过数据提供者来执行此操作。如果您已经将图像加载到内存中,那么您应该使用 CGDataProviderCreateDirect。该数据提供者将成为 CGImageCreate 的参数。

接下来,在您的 Cocoa View 的 drawRect: 方法中,您需要像这样获取当前上下文: CGContextRef cgContext = [[NSGraphicsContext currentContext] graphicsPort];

然后使用CGContextDrawImage绘制图像。

正如 Matt 提到的,您可以使用 CGContextSetBlendMode 控制混合。

关于objective-c - Objective-C/Cocoa 中的 BitBlt() 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1622890/

相关文章:

macos - Mac OS X - 监控应用程序启动?

iphone - 将 Obj-C 2.0 属性与可变对象(例如 NSMutableArray)一起使用的最佳方式是什么?

swift - 如何显示来自已知图像路径的图像 - SwiftUI

objective-c - 并发绘制矩形:

cocoa - NSOutlineView 和 NSTreeController 可以处理数千个对象吗?

macos - storeaccountd(453) 在 Mac 上开始应用内购买时拒绝文件写入创建

objective-c - 保留/释放返回对象

ios - 提议的 Destination IndexPath 由于 header 错误

ios - 组织多个 NSURLSessionTasks

objective-c - ParseKit 与我的 EOL 符号不匹配 : What am I doing wrong?