我正在阅读DICOMDIR,然后逐个显示给定系列的所有图像,方法是滚动鼠标或向下按键盘上的箭头键。
现在,我碰巧在其中一张图片上画了一条线。 目前,当我滚动图像时,线条会继续通过所有图像。
但是,当我开始滚动时,所需的结果是该行应该消失,因为它不属于下一个图像。当我向后滚动到我绘制该线的图像时,该线应该显示在该图像上。
任何想法如何使该行只是第一次绘制的图像的一部分,而不是其他?
我尝试过:将该图像的文件路径(绘制线的位置)存储到CStringArray中。我应该如何使用这个存储的文件路径绘制该图像及其行?
答案 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;
}
}