我想编写一个函数,该函数需要在DC上设置剪切区域,但是在完成后恢复DC上任何现有的剪切区域。

因此,我发现 GetClipRgn 听起来确实像我想要的,但似乎令人困惑。我找不到使用它的任何示例,Petzold没有提供任何东西。

我想到的是:

void DrawStuff( HDC hDC )
{
    HRGN restoreRegion = CreateRectRgn( 0, 0, 0, 0 );
    if (GetClipRgn( hDC, restoreRegion ) != 1)
    {
        DeleteObject( restoreRegion );
        restoreRegion = NULL;
    }

    //
    // Set new region, do drawing
    //

    SelectClipRgn( hDC, restoreRegion );
    if (restoreRegion != NULL)
    {
        DeleteObject( restoreRegion );
    }
}

我似乎需要创建一个区域才能获得当前区域,这似乎很奇怪。

这是正确用法吗?

有没有更好的方法可以达到相同的效果?

最佳答案

最接近正确答案的是汉斯·帕桑特(Hans Passant)的评论:

关于c++ - 正确使用GetClipRgn?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3478180/

10-11 22:56