c# - 从 2d 整数数组制作 NSImage
问题描述
嗨,我正在开发一个程序来加载 DICOM 文件(图像的医学文件格式)并将它们显示在 mac os cocoa 应用程序中。我使用 Visual Studio 在 C# 中编码。
我已经到了可以制作表示强度的二维整数数组的地步,没有颜色。
我不知道如何将其制成 NSImage 以便我可以将其用作可可中的图像。
建议?
解决方案
有多种方法可以完成此操作,具体取决于您的需要,但“现代”方法是使用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 对象”中进行了说明。
推荐阅读
- java - 如何在firebase中插入数据字符串数组?
- react-native - 谷歌播放控制台封闭式测试链接发送给接受的测试人员,以无限时间加载应用程序。(反应原生)
- flutter - 颤振飞镖泛型类型比较无法正常工作
- .net - 有什么方法可以让 .NET 热重载更快?
- c# - 如何在运行 SQL Server 的虚拟机上创建 connectionString 以将 ado.net c# 连接到
- css - Highcharts如何为饼图数据和向下钻取数据制作一组颜色
- c# - 获取所有 cookie,包括 httponly - WebView UI
- javascript - 禁用按钮后,仅将底部边框设置为宽度为 0
- c# - Xamarin/C# 中的数据更改通知
- html - 特定的 CSS 类阻碍了边框动画