您好,我正在研究一个程序来加载DICOM文件(图像的医学文件格式)并将其显示在mac os可可应用中。使用Visual Studio在C#中进行即时编码。
我已经可以制作一个二维数组来表示强度了,没有颜色。
我不知道如何将其制作为NSImage,以便可以将其用作可可中的图像。
建议?
答案 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"中进行了说明。