gpt4 book ai didi

ios - swift - 每像素绘制 UIView 像素的速度改进

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:22:49 25 4
gpt4 key购买 nike

有没有办法提高将每个像素绘制到 UIView 中的速度/性能?

当前 500x500 像素 UIView 的实现非常慢。

class CustomView: UIView {

public var context = UIGraphicsGetCurrentContext()

public var redvalues = [[CGFloat]](repeating: [CGFloat](repeating: 1.0, count: 500), count: 500)

public var start = 0
{
didSet{
self.setNeedsDisplay()
}
}

override func draw(_ rect: CGRect
{
super.draw(rect)
context = UIGraphicsGetCurrentContext()
for yindex in 0...499{
for xindex in 0...499 {
context?.setStrokeColor(UIColor(red: redvalues[xindex][yindex], green: 0.0, blue: 0.0, alpha: 1.0).cgColor)

context?.setLineWidth(2)
context?.beginPath()
context?.move(to: CGPoint(x: CGFloat(xindex), y: CGFloat(yindex)))
context?.addLine(to: CGPoint(x: CGFloat(xindex)+1.0, y: CGFloat(yindex)))
context?.strokePath()
}
}
}
}

非常感谢

最佳答案

绘制单个像素时,您可以使用 a bitmap context.位图上下文将原始像素数据作为输入。

上下文会复制您的原始像素数据,因此您不必使用可能会慢得多的路径。然后,您可以使用 context.makeImage() 获取 CGImage

然后可以在 ImageView 中使用该图像,这样就无需每帧重新绘制整个图像。

如果不想手动创建位图上下文,可以使用

UIGraphicsBeginImageContext(size)
let context = UIGraphicsGetCurrentContext()
// draw everything into the context
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()

然后您可以使用 UIImageView 来显示渲染图像。

也可以绘制到 CALayer 中,不需要每帧都重绘,只有在调整大小时才需要重绘。

关于ios - swift - 每像素绘制 UIView 像素的速度改进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45553376/

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