从2d整数数组制作NSImage

时间:2019-01-30 16:14:59

标签: c# cocoa nsimage

您好,我正在研究一个程序来加载DICOM文件(图像的医学文件格式)并将其显示在mac os可可应用中。使用Visual Studio在C#中进行即时编码。

我已经可以制作一个二维数组来表示强度了,没有颜色。

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

建议?

1 个答案:

答案 0 :(得分:0)

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

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

此方法采用代码块参数,该代码将数据转换为图像,就像您将其绘制到屏幕上以进行自定义NSView一样。 (如果您以前从未这样做过,请从Cocoa Drawing Guide: "Views and Drawing"以及"Graphics Contexts"开始。

工厂方法很聪明,并且(除非您更改屏幕的分辨率),它将仅被调用一次,并且结果图像将缓存在NSImage的表示形式中。

下一个选择(实际上可能更方便)是将int数组转换为表示图像中像素值的RGBA(或其他)缓冲区。此过程首先创建一个特定的NSBitmapImageRep(这是一个“表示形式”对象-每个NSImage是一个或多个表示形式的集合)。

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

这些技术和其他技术在Cocoa Drawing Guide: "Creating NSImage Objects"中进行了说明。