菜鸟教程小白 发表于 2022-12-13 02:26:33

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


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

<p>500x500 像素 UIView 的当前实现速度非常慢。</p>

<pre><code>class CustomView: UIView {

public var context = UIGraphicsGetCurrentContext()

public var redvalues = [](repeating: (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, 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()
    }
}
}
}
</code></pre>

<p>非常感谢</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>绘制单个像素时,可以使用 <a href="https://developer.apple.com/documentation/coregraphics/cgcontext/1455939-init" rel="noreferrer noopener nofollow">a bitmap context.</a>位图上下文将原始像素数据作为输入。</p>

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

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

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

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

<p>然后你可以使用 <code>UIImageView</code> 来显示渲染的图像。</p>

<p>也可以画成<code>CALayer</code>,不需要每帧都重画,只需要调整大小即可。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - swift - 每像素绘图的 UIView 像素速度改进,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/45553376/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/45553376/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - swift - 每像素绘图的 UIView 像素速度改进