采用VC++MFC实现,我把主要的代码给贴上来了。虽然网上也可以搜到部分代码,但是没有具体的实现过程。由于我们采用dcmtk能够将dib读取出来,但是没有调色板,所以我们需要自己构造我们的调试板,具体的代码如下:
DcmFileFormat * pDicomFile=new DcmFileFormat();
OFCondition Fcond=pDicomFile->loadFile("txt.DCM");//打开文件,此处可以根据具体路径进行更改
if(Fcond.good())
pDC->TextOut(50,50,(CString )"load file success");
else
pDC->TextOut(50,50,(CString)"load file error");
DcmDataset * pDataset=pDicomFile->getDataset();
//这个pDataset里面包含了dicom文件都属性的信息,包括病人的id,姓名等以及其他,可以通过
//OFString ofstr;
//pDataset->findAndGetOFString(DCM_PatientID,ofstr);
//来得到具体的属性,其中DCM_PatientID为dctmk内部定义的宏定义,具体请看dcmtk帮助文档
E_TransferSyntax xfer=pDataset->getOriginalXfer();
/////////////////////////////////
DicomImage * pDicomImg=new DicomImage(pDataset,xfer,0,0,0);
pDicomImg=new DicomImage(FileName,0,0,0);
//上面两个函数都可以实现产生Dico

这篇博客展示了如何在VC++ MFC应用中使用dcmtk库加载并显示dicom文件。通过DcmFileFormat和DicomImage类,实现了文件的读取和图像数据的获取。为了显示图像,需要构造设备无关位图(DIB)以及调色板,并使用StretchDIBits函数将DIB绘制到窗口。代码中还比较了两种创建DicomImage对象的方法,指出第二种方法在内存使用上的优势。
最低0.47元/天 解锁文章
423

被折叠的 条评论
为什么被折叠?



