加载和显示DICOM图像在医学观众——WinForms c#

本教程展示了如何加载和显示一个LEADTOOLS DICOM图像MedicalViewerWinForms控制。这也将展示如何加载和显示DICOM标签查看器控制,以及如何配置鼠标和键盘查看器显示操作。

概述
总结 本教程介绍了如何加载和显示DICOM图像在医学观众在WinForms c#应用程序。
完成时间 30分钟
Visual Studio项目 下载教程项目(KB) 11日
平台 Windows WinForms c#应用程序
IDE Visual Studio 2019中,2022年
开发许可 下载LEADTOOLS
试试用另一种语言

所需的知识

熟悉基本的步骤创建一个项目的审查添加引用和设置一个许可证教程,在工作之前加载和显示DICOM图像在医学观众——WinForms c#教程。

创建项目并添加LEADTOOLS引用

从项目中创建的副本添加引用和设置一个许可证教程。如果你没有这个项目,按照这个教程中的步骤创建它。

的引用需要取决于项目的目的。引用可以通过添加一个或另一个下面的两种方法(但不是全部)。

如果使用NuGet引用,本教程需要以下NuGet包:

如果使用本地DLL的引用,下面的DLL是必要的。

dll位于< INSTALL_DIR > \ LEADTOOLS22 \ Bin \ Dotnet4 \ x64:

对于一个完整的列表的应用程序所需的DLL文件,请参考文件包含在您的应用程序

设置许可文件

许可解锁项目需要的特性。它必须设置工具箱函数被调用之前。详情,包括教程为不同的平台,请参考设置一个运行时许可

有两种类型的运行时许可证:

初始化MedicalViewer

与项目创建、添加引用,许可,可以开始编码。

右键单击Form1.cs解决方案资源管理器并选择视图代码显示形式背后的代码。

将下面的代码添加到使用块顶部。

c#
使用系统;使用先;使用System.Windows.Forms;使用Leadtools;使用Leadtools.Dicom;使用Leadtools.MedicalViewer;

添加下面的全局变量初始化MedicalViewer控制和当前多单元组件。

c#
私人MedicalViewer _medicalViewer;私人MedicalViewerMultiCell _cell;

解决方案资源管理器,双击Form1.cs显示它的设计师。单击事件图标属性窗口。然后,双击负载创建一个事件处理程序如果不存在。

添加以下代码内部Form1_Load事件处理程序。

c#
私人无效Form1_Load (对象发送方的EventArgs e){/ /创建MedicalViewer控制并将其添加到表单_medicalViewer =MedicalViewer (1,1);_medicalViewer。码头= DockStyle.Fill;Controls.Add (_medicalViewer);/ /启动DICOM引擎DicomEngine.Startup ();}

添加负载DICOM图像的代码

开放Form1.cs在设计器中,然后添加一个文件菜单的负载DICOM菜单项。为此,打开工具箱并双击MenuStrip将添加一个菜单形式。设计师,改变的文本菜单文件。然后将一个条目添加到菜单和设置它的文本装DICOM。把新项目的名称loadDICOMToolStripMenuItem

双击负载DICOM菜单项来编辑它的事件处理程序。添加以下代码:

c#
私人无效loadDICOMToolStripMenuItem_Click (对象发送方的EventArgs e){试一试{/ /清楚现有的细胞如果(_medicalViewer.Cells。数> 0)_medicalViewer.Cells.Clear ();/ /显示打开文件对话框OpenFileDialog dlg =OpenFileDialog ();了解地理。InitialDirectory =@“C: \ LEADTOOLS22 \资源\ \ DICOM图像”;了解地理。过滤器=“DICOM数据集(* .dcm) | * .dcm”;如果(dlg.ShowDialog ()= = DialogResult.OK){DicomDataSet数据集=DicomDataSet ();dataSet.Load (dlg)。文件Name, DicomDataSetLoadFlags.LoadAndClose);DicomElement pixelDataElement = dataSet.FindFirstElement (DicomTag.PixelData,);如果(pixelDataElement ! =){/ /从DICOM数据集获取图像DicomGetImageFlags DicomGetImageFlags = DicomGetImageFlags。AutoDetectInvalidRleCompression | DicomGetImageFlags。AutoApplyModalityLut | DicomGetImageFlags.AutoApplyVoiLut;RasterImage图像=数据集。getimage (pixelDataElement 0 dataSet.GetImageCount (pixelDataElement), 0, RasterByteOrder。灰色,dicomGetImageFlags);/ /创建查看器细胞使用加载图片InitializeMultiCell(图片);如果(_cell ! =){/ /添加多单元初始化_medicalViewer.Cells.Add (_cell);}}其他的{MessageBox.Show (“这个数据集不包含一个PixelData元素”);_cell =;}}}(异常交货){MessageBox.Show (ex.ToString ());}}

创建一个新的命名方法InitializeMultiCell方法。该方法将被称为内loadDICOMToolStripMenuItem_Click事件处理程序,如上所示。将下面的代码添加到创建的实例MedicalViewerMultiCell类使用DICOM图像文件并设置单元格的属性和操作。

c#
私人无效InitializeMultiCell (RasterImage图片){/ /初始化医疗观众多单元的_cell =MedicalViewerMultiCell(图片,真正的,1,1);_cell。行= 1;_cell。列= 1;_cell。冻结=;_cell。DisplayRulers = MedicalViewerRulers.Both;_cell。ApplyOnIndividualSubCell =;_cell。ApplyActionOnMove =真正的;_cell。FitImageToCell =真正的;_cell。选择=真正的;_cell。ShowTags =真正的;/ /设置鼠标和键盘操作/ /添加一些行动将被用于改变图像的属性内部的控制。_cell.AddAction (MedicalViewerActionType.WindowLevel);_cell.AddAction (MedicalViewerActionType.Offset);_cell.AddAction (MedicalViewerActionType.Stack);/ /添加操作分配给一个鼠标按钮,即当用户单击并拖动鼠标按钮,相关的行动将被激活。_cell.SetAction (MedicalViewerActionType。抵消,MedicalViewerMouseButtons。对,MedicalViewerActionFlags.Active);_cell.SetAction (MedicalViewerActionType。WindowLevel MedicalViewerMouseButtons。离开,MedicalViewerActionFlags.Active);_cell.SetAction (MedicalViewerActionType。堆栈,MedicalViewerMouseButtons。轮,MedicalViewerActionFlags.Active);/ /添加操作分配给工作像鼠标键盘键。MedicalViewerKeys medicalKeys =MedicalViewerKeys(钥匙。下来,钥匙。起来,钥匙。离开了,钥匙。对,MedicalViewerModifiers.None);_cell.SetActionKeys (MedicalViewerActionType。抵消,medicalKeys);medicalKeys。修饰符= MedicalViewerModifiers.Ctrl;_cell.SetActionKeys (MedicalViewerActionType。WindowLevel medicalKeys);}

添加DICOM标记代码

修改之前添加的代码loadDICOMToolStripMenuItem_Click事件处理程序来获取用户数据标签信息的加载数据集。

c#
/ /创建查看器细胞使用加载图片InitializeMultiCell(图片);如果(_cell ! =){/ /获取用户数据显示标签查看器字符串[]userDataTags =字符串[6];userDataTags [0] = GetDicomTag(数据集,DicomTag.InstitutionName);userDataTags [1] = GetDicomTag(数据集,DicomTag.PatientName);userDataTags [2] = GetDicomTag(数据集,DicomTag.PatientAge);userDataTags [3] = GetDicomTag(数据集,DicomTag.PatientBirthDate);userDataTags [4] = GetDicomTag(数据集,DicomTag.PatientSex);userDataTags [5] = GetDicomTag(数据集,DicomTag.PatientID);SetTags (userDataTags);/ /添加多单元初始化_medicalViewer.Cells.Add (_cell);}

添加一个新方法GetDicomTag上面,叫来检索每个dicom标记。添加下面的代码:

c#
私人字符串GetDicomTag (DicomDataSet ds,标签){= ds.FindFirstElement DicomElement元素(、标签、真正的);如果(元素! =)返回ds.GetConvertValue(元素);返回;}

添加一个新的SetTags方法将调用内部loadDICOMToolStripMenuItem_Click事件处理程序,如上所示。将下面的代码添加到配置标签信息显示在观众的帧使用用户提供的数据和当前显示的属性框架。

c#
私人无效SetTags (字符串[]userDataTags){/ /设置用户数据标签_cell。MedicalViewerTagAlignment SetTag (2。TopRight MedicalViewerTagType。用户数据,userDataTags [0]);_cell。MedicalViewerTagAlignment SetTag (3。TopRight MedicalViewerTagType。用户数据,userDataTags [1]);_cell。MedicalViewerTagAlignment SetTag (4。TopRight MedicalViewerTagType。用户数据,userDataTags [2]);_cell。MedicalViewerTagAlignment SetTag (5。TopRight MedicalViewerTagType。用户数据,userDataTags [3]);_cell。MedicalViewerTagAlignment SetTag(6日。TopRight MedicalViewerTagType。用户数据,userDataTags [4]);_cell。MedicalViewerTagAlignment SetTag(7日。TopRight MedicalViewerTagType。用户数据,userDataTags [5]);/ /设置其他标签_cell。MedicalViewerTagAlignment SetTag(6日。TopLeft MedicalViewerTagType.Scale);_cell。MedicalViewerTagAlignment SetTag(7日。TopLeft MedicalViewerTagType.Frame);_cell。MedicalViewerTagAlignment SetTag (0。BottomLeft MedicalViewerTagType.RulerUnit);_cell。MedicalViewerTagAlignment SetTag (1。BottomLeft MedicalViewerTagType.FieldOfView);_cell。MedicalViewerTagAlignment SetTag (2。BottomLeft MedicalViewerTagType.WindowLevelData);_cell。MedicalViewerTagAlignment SetTag (4。BottomLeft MedicalViewerTagType.Alpha);}

运行该项目

按运行项目F5,或通过选择调试- >开始调试

如果步骤正确之后,应用程序运行和加载并显示所选的DICOM图像的MedicalViewer控制同时也显示DICOM文件中包含指定的标签。应用程序还允许控制显示使用鼠标和键盘操作。

总结

本教程展示了如何添加必要的引用来加载和显示DICOM图像的MedicalViewerWinForms控制。此外,它展示了如何使用MedicalViewerMultiCell对象。

另请参阅

iOS
188金宝搏的网址客服|支持|联系我们|知识产权的通知
©1991 - 2023领先的技术公司。保留所有权利。