本教程展示了如何加载和显示一个LEADTOOLS DICOM图像MedicalViewer
WinForms控制。这也将展示如何加载和显示DICOM标签查看器控制,以及如何配置鼠标和键盘查看器显示操作。
概述 | |
---|---|
总结 | 本教程介绍了如何加载和显示DICOM图像在医学观众在WinForms c#应用程序。 |
完成时间 | 30分钟 |
Visual Studio项目 | 下载教程项目(KB) 11日 |
平台 | Windows WinForms c#应用程序 |
IDE | Visual Studio 2019中,2022年 |
开发许可 | 下载LEADTOOLS |
试试用另一种语言 |
|
熟悉基本的步骤创建一个项目的审查添加引用和设置一个许可证教程,在工作之前加载和显示DICOM图像在医学观众——WinForms c#教程。
从项目中创建的副本添加引用和设置一个许可证教程。如果你没有这个项目,按照这个教程中的步骤创建它。
的引用需要取决于项目的目的。引用可以通过添加一个或另一个下面的两种方法(但不是全部)。
如果使用NuGet引用,本教程需要以下NuGet包:
Leadtools.Medical.Viewer.WinForms
Leadtools.Jpeg2000
如果使用本地DLL的引用,下面的DLL是必要的。
dll位于< INSTALL_DIR > \ LEADTOOLS22 \ Bin \ Dotnet4 \ x64
:
Leadtools.dll
Leadtools.Codecs.Cmp.dll
Leadtools.Codecs.J2k.dll
Leadtools.Dicom.dll
Leadtools.MedicalViewer.dll
对于一个完整的列表的应用程序所需的DLL文件,请参考文件包含在您的应用程序。
许可解锁项目需要的特性。它必须设置工具箱函数被调用之前。详情,包括教程为不同的平台,请参考设置一个运行时许可。
有两种类型的运行时许可证:
与项目创建、添加引用,许可,可以开始编码。
右键单击Form1.cs
在解决方案资源管理器并选择视图代码显示形式背后的代码。
将下面的代码添加到使用
块顶部。
使用系统;
使用先;
使用System.Windows.Forms;
使用Leadtools;
使用Leadtools.Dicom;
使用Leadtools.MedicalViewer;
添加下面的全局变量初始化MedicalViewer
控制和当前多单元组件。
私人MedicalViewer _medicalViewer;
私人MedicalViewerMultiCell _cell;
在解决方案资源管理器,双击Form1.cs
显示它的设计师。单击事件图标属性窗口。然后,双击负载创建一个事件处理程序如果不存在。
添加以下代码内部Form1_Load
事件处理程序。
私人无效Form1_Load (对象发送方的EventArgs e)
{
/ /创建MedicalViewer控制并将其添加到表单
_medicalViewer =新MedicalViewer (1,1);
_medicalViewer。码头= DockStyle.Fill;
Controls.Add (_medicalViewer);
/ /启动DICOM引擎
DicomEngine.Startup ();
}
开放Form1.cs
在设计器中,然后添加一个文件菜单的负载DICOM菜单项。为此,打开工具箱并双击MenuStrip将添加一个菜单形式。设计师,改变的文本菜单文件。然后将一个条目添加到菜单和设置它的文本装DICOM。把新项目的名称loadDICOMToolStripMenuItem
。
双击负载DICOM菜单项来编辑它的事件处理程序。添加以下代码:
私人无效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图像文件并设置单元格的属性和操作。
私人无效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);
}
修改之前添加的代码loadDICOMToolStripMenuItem_Click
事件处理程序来获取用户数据标签信息的加载数据集。
/ /创建查看器细胞使用加载图片
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标记。添加下面的代码:
私人字符串GetDicomTag (DicomDataSet ds,长标签)
{
= ds.FindFirstElement DicomElement元素(零、标签、真正的);
如果(元素! =零)
返回ds.GetConvertValue(元素);
返回零;
}
添加一个新的SetTags
方法将调用内部loadDICOMToolStripMenuItem_Click
事件处理程序,如上所示。将下面的代码添加到配置标签信息显示在观众的帧使用用户提供的数据和当前显示的属性框架。
私人无效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图像的MedicalViewer
WinForms控制。此外,它展示了如何使用MedicalViewerMultiCell
对象。