gpt4 book ai didi

pointers - 在 swift 中将 CFContextRef 转换为可变的 void 指针?

转载 作者:搜寻专家 更新时间:2023-10-31 08:05:32 26 4
gpt4 key购买 nike

我正在尝试将此 objc 代码转换为 swift:

CGContextRef contextRef = CGBitmapContextCreate(NULL,
proposedRect.size.width,
proposedRect.size.height,
CGImageGetBitsPerComponent(imageRef),
0,
colorSpaceRef,
(CGBitmapInfo)kCGImageAlphaPremultipliedFirst);
NSGraphicsContext *context = [NSGraphicsContext graphicsContextWithGraphicsPort:contextRef flipped:NO];

到目前为止,我得到了这个:

var bitmapContext: CGContext = CGBitmapContextCreate(data, UInt(proposedRect.width), UInt(proposedRect.height), CGImageGetBitsPerComponent(image), 0, colorSpace, CGBitmapInfo(CGImageAlphaInfo.PremultipliedFirst.toRaw()))
let context = NSGraphicsContext(graphicsPort: bitmapContext, flipped: false)

问题是 CGBitmapContextCreate 返回 CGContext 类型并且 NSGraphicsContext 初始化程序接受 graphicsPort 作为 CMutableVoidPointer 类型。那么如何将 CGContext 转换为 CMutableVoidPointer 呢?

在这里找到了相关的反向类型转换,但对我帮助不大 How to convert COpaquePointer in swift to some type (CGContext? in particular)

最佳答案

我最终使用 reinterpretCast 函数返回 bitmapContext 地址的中间 Int 变量。

var bitmapContext: CGContext = CGBitmapContextCreate(...)

let bitmapContextAddress: Int = reinterpretCast(bitmapContext)
let bitmapContextPointer: CMutableVoidPointer = COpaquePointer(UnsafePointer<CGContext>(bitmapContextAddress))
let context = NSGraphicsContext(graphicsPort: bitmapContextPointer, flipped: false)

关于pointers - 在 swift 中将 CFContextRef 转换为可变的 void 指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24285857/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com