dcmtk createWindowsDIB CImagelist

本文介绍如何使用DCMTK库从DICOM文件创建图像,并将其转换为Windows DIB格式,最终集成到CImageList中以实现图像的显示与管理。详细步骤包括获取DICOM数据集、创建图像、调整大小、生成DIB并绑定到CImageList。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DcmDataset *m_dcmDataset = dfile->getDataset();
       E_TransferSyntax xfer = m_dcmDataset ->getOriginalXfer();
       DicomImage *di = new DicomImage(m_dcmDataset,xfer,CIF_MayDetachPixelData,1,2);
       di->setHistogramWindow();
       di = di->createScaledImage((const unsigned long)100,(const unsigned long)100,1,1);
       //di->writeBMP(bmpFilePath,24);
       void * bufferpic;
       di->createWindowsDIB(bufferpic,0,0,24,1,1);

       BITMAPINFO m_bmiCurrentImage;
       memset(&m_bmiCurrentImage, 0, sizeof(m_bmiCurrentImage));
       m_bmiCurrentImage.bmiHeader.biSize = sizeof(m_bmiCurrentImage.bmiHeader);
       m_bmiCurrentImage.bmiHeader.biWidth = di->getWidth();;
       m_bmiCurrentImage.bmiHeader.biHeight = di->getHeight();;
       m_bmiCurrentImage.bmiHeader.biPlanes = 1;
       m_bmiCurrentImage.bmiHeader.biBitCount = 24;
       m_bmiCurrentImage.bmiHeader.biCompression = BI_RGB;

       HBITMAP hbitmap = CreateDIBitmap(GetDC()->m_hDC,&(m_bmiCurrentImage.bmiHeader),
        CBM_INIT,bufferpic,
        &m_bmiCurrentImage,DIB_RGB_COLORS);

       //HBITMAP hbitmap = (HBITMAP)LoadImage(NULL,bmpFilePath,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
       CBitmap *bmp = CBitmap::FromHandle(hbitmap);
       if(bmp!=NULL)
       {
        COLORREF rgbTransparentColor;
        m_imageList.Add(bmp,rgbTransparentColor);
        m_listCtrl.InsertItem(0,finder.GetFileName(),index++);
        m_filepaths->AddHead(filePath);
       }

dcmtk 中创建的DIB设备无关图要绑定到CIMAGELIST中,先要CreateDIBitmap创建成设备相关的图,在绑定!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值