MFC从一组图像中的一个图像上绘制一条线

时间:2012-05-04 06:04:43

标签: image mfc line dicom

我正在阅读DICOMDIR,然后逐个显示给定系列的所有图像,方法是滚动鼠标或向下按键盘上的箭头键。

现在,我碰巧在其中一张图片上画了一条线。 目前,当我滚动图像时,线条会继续通过所有图像。

但是,当我开始滚动时,所需的结果是该行应该消失,因为它不属于下一个图像。当我向后滚动到我绘制该线的图像时,该线应该显示在该图像上。

任何想法如何使该行只是第一次绘制的图像的一部分,而不是其他?

我尝试过:将该图像的文件路径(绘制线的位置)存储到CStringArray中。我应该如何使用这个存储的文件路径绘制该图像及其行?

1 个答案:

答案 0 :(得分:1)

我不太确定你要做什么。如果您的意思是想要为特定图像添加线注释,则可以将其存储为GSPS数据,并将其与像素数据一起读取。 GreyScale Presentation State对象 允许将多个图形注释序列包含在单个对象中。

你的方式

由于您已将文件的路径存储在CStringArray中,请找到读取和显示图像的代码。添加与此类似的代码(我假设您在阅读时显示它。)请查看以下代码。

// Code to read the file where path is csFilePath
// Read bitmap is stored to CBitmap* pBitmap
CDC* pDC = GetDC();
CDC memDC;
memDC.CreateCompatibleDC( pDC );
CBitmap* pOldBitmap = memDC.SelectObject( pBitmap );
pDC->BitBlt( xVal, yVAl, width, height, memDc, SRC_COPY );
memDC.SelectObject( pOldBitmap );
memDC.DeleteObject();
for( int nIdx; nIdx < yourLineArray.GetSize(); nIdx++ )
{
    if( csFilePath == yourLineArray[nIdx] )
    {
        pDC->DrawLine( x1, y1, x2, y2 );
        break;
    }
}