我想编写一个函数,需要在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 );
}
}
Run Code Online (Sandbox Code Playgroud)
我需要创建一个区域才能获得当前区域,这似乎很奇怪.
这是正确的用法吗?
是否有更好的方法来达到同样的效果?