首页 > 解决方案 > 从 2d 整数数组制作 NSImage

问题描述

嗨,我正在开发一个程序来加载 DICOM 文件(图像的医学文件格式)并将它们显示在 mac os cocoa 应用程序中。我使用 Visual Studio 在 C# 中编码。

我已经到了可以制作表示强度的二维整数数组的地步,没有颜色。

我不知道如何将其制成 NSImage 以便我可以将其用作可可中的图像。

建议?

标签: c#cocoansimage

解决方案


有多种方法可以完成此操作,具体取决于您的需要,但“现代”方法是使用NSImage类工厂方法:

+ (instancetype)imageWithSize:(NSSize)size flipped:(BOOL)drawingHandlerShouldBeCalledWithFlippedContext drawingHandler:(BOOL (^)(NSRect dstRect))drawingHandler;

此方法采用将数据转换为图像的代码的块参数,就像您将其绘制到屏幕上以进行自定义NSView实现一样。(如果您以前从未这样做过,请从Cocoa 绘图指南:“视图和绘图”以及“图形上下文”开始。

工厂方法很聪明(除非屏幕分辨率发生变化),它只会被调用一次,并且生成的图像会缓存在NSImage's 表示中。

下一个替代方法(实际上对您来说可能更容易)是将您的int数组转换为表示图像中像素值的 RGBA(或其他)缓冲区。这个过程首先创建一个特定的NSBitmapImageRep(这是一个“表示”对象——每个对象NSImage都是一个或多个表示的集合)。

这将需要对各种像素缓冲区格式进行一些研究,但这也很容易做到。构建 2D 像素缓冲区表示后,您可以直接将其转换为NSImage.

这些以及其他技术在Cocoa 绘图指南:“创建 NSImage 对象”中进行了说明。


推荐阅读