首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为自定义NSImageRep子类实现-draw

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

Stack Overflow用户
提问于 2013-07-11 13:34:41
回答 1查看 284关注 0票数 1

我对创建一个可以保存双精度值的NSImageRep子类很感兴趣。标准NSBitmapImageRep可以容纳单精度浮点数,但在双精度浮点数上会出现瓶颈。我喜欢NSBitmapImageRep公开用于操作的数据缓冲区,并且我希望保留操作数据的能力,而不是操作需要转换为图像以进行显示的单独缓冲区。

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

我看到一个犹豫不决的建议,要画很多小矩形,大概每个像素一个:How to Implement Custom Image representation for NSImage

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

此外,我发现有趣的是,要实现的方法是简单的-draw,而不是任何形式的有界绘制。有没有一种方法可以从NSImageRep或其他东西中确定当前剪切区域是什么,以避免绘制不必要的图像部分?

EN

回答 1

Stack Overflow用户

发布于 2014-06-22 10:33:32

我相信你已经为这篇文章找到了解决方案,但如果你仍然感兴趣的话,这是我的发现。

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

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

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

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

https://stackoverflow.com/questions/17585755

复制
相关文章

相似问题

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