首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Swift中加速/减少CPU负载以绘制位图

在Swift中加速/减少CPU负载以绘制位图
EN

Stack Overflow用户
提问于 2017-09-18 02:49:57
回答 1查看 625关注 0票数 0

我必须在Swift中绘制瀑布图,我使用的是位图上下文,更新非常快,大约每秒20行,总共有大约400行要显示-全宽。

我的CPU负载目前大约是100%,我想知道,如果有更好的方法,画出这个,以降低CPU负载。

代码语言:javascript
复制
func draw2(pixel:[rgba],width:Int,height:Int) -> UIImage
{   let colorSpace = CGColorSpaceCreateDeviceRGB()

    var data = UnsafeMutableRawPointer(mutating: pixel)

    let bitmapContext = CGContext(data: data,
                                  width: width,
                                  height: height,
                                  bitsPerComponent: 8,
                                  bytesPerRow: 4*width,
                                  space: colorSpace,
                                  bitmapInfo: CGImageAlphaInfo.premultipliedLast.rawValue)


    let image = bitmapContext?.makeImage()

    return UIImage(cgImage: image!)

}

非常感谢大家的共同之处

EN

回答 1

Stack Overflow用户

发布于 2017-09-18 03:35:46

根据您告诉我的内容,您应该能够缓存图像,并且每次只绘制增量线。您需要保留一个class参数来存储您的图像:

代码语言:javascript
复制
var cachedImage : UIImage?

每次调用绘图函数时,请执行以下操作:

  1. 使用UIImage.draw(在:CGRect中)绘制缓存的图像(如果存在,第一次运行时当然不会)(请参见https://developer.apple.com/documentation/uikit/uiimage/1624092-draw).
  2. Draw
    1. 新路径。
    2. 将结果保存回cachedImage。

在每次绘制迭代时,您显然希望将矩形移动一个像素,并初始化您的上下文,以便为新行腾出空间。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46267694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档