gpt4 book ai didi

objective-c - 如何为自定义 NSImageRep 子类实现 -draw

转载 作者:行者123 更新时间:2023-12-03 17:12:35 24 4
gpt4 key购买 nike

我有兴趣创建一个可以保存 double 值的 NSImageRep 子类。标准 NSBitmapImageRep 可以保存单精度 float ,但会因 double float 而阻塞。我喜欢 NSBitmapImageRep 公开数据缓冲区以进行操作,并且我希望保留就地操作数据的能力,而不是操作需要将其转换为图像以进行显示的单独缓冲区。

我认为子类化相当简单,除了我不确定如何处理最基本的部分:绘制图像。文档将 -draw 列为我需要实现的方法,这是有道理的,但是绘制位图的最佳方法是什么?

我看到一个犹豫的建议,即绘制许多小矩形,大概每个像素一个: How to Implement Custom Image representation for NSImage

有没有更有效的方法?我已经查看过,但找不到带有位图数据的自定义 NSImageRep 的有效示例 - 大多数示例都使用矢量数据。

此外,我发现有趣的是,实现的方法只是 -draw,而不是任何形式的有界绘制。有没有办法确定当前剪切区域来自 NSImageRep 或避免绘制不必要的图像部分?

最佳答案

我确信此时您已经找到了这篇文章的解决方案,但如果您仍然感兴趣,这里是我的发现。

我在实现自己的 NSImageRep 时发现,有许多低效的方法,而且您不一定必须只实现极其简单的 -( BOOL)draw 方法。如果您提供 -(BOOL)drawInRect: 的实现,则在大多数情况下都会使用它。事实上,在我的 NSImageRep 子类中,当存在 -(BOOL)drawInRect: 时,我还没有看到 -(BOOL)draw 被调用.

对于实际绘图,我一直在使用 Core Graphics,它允许您从原始数据创建图像,并以良好的控制力和精度进行绘制,同时速度非常快。我的表示仍然相当粗糙,但即使在处理大图像时也很快。

整个主题严重缺乏文档,可能是因为几乎不需要旧标准(TIFF、PNG、JPEG 等)之外的其他表示形式。做研究是相当令人沮丧的,所以如果我有时间,我会写一篇博客文章,详细介绍我遇到的所有事情。

关于objective-c - 如何为自定义 NSImageRep 子类实现 -draw,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17585755/

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