我想编写一个函数,需要在 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 的评论:
Yeah, it's a weird function. Your code looks okay.
关于c++ - GetClipRgn 的正确用法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3478180/