1

我正在阅读 DICOMDIR,然后通过鼠标滚动或向上 n 向下按键盘箭头键,一一显示给定系列的所有图像。

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

但是想要的结果是,当我开始滚动时,该行应该消失,因为它不属于下一个图像。当我向上滚动到我画那条线的那个图像时,这条线应该显示在那个图像上。

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

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

4

1 回答 1

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;
    }
}
于 2012-06-29T03:53:07.910 回答