我想编写一个函数,该函数需要在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/