правильное использование GetClipRgn?

Я хочу написать функцию, которая должна установить область ограничения на DC, но восстановить все существующие области ограничения на DC, когда это будет сделано.

Итак, я нашел GetClipRgn , который звучит как то, что я хочу, но кажется странным. Я не смог найти никаких примеров его использования, и Петцольду было нечего предложить.

Я придумал следующее:

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 );
    }
}

Просто странно, что мне нужно создать регион, чтобы получить текущий регион.

Это правильное использование?

Есть ли лучший способ добиться того же эффекта?

7
задан jnm2 8 July 2014 в 17:58
поделиться

1 ответ

Будет ли int SelectClipRgn (__in HDC hdc, __in HRGN hrgn); выполнить задание?

Функция SelectClipRgn выбирает регион в качестве текущей области отсечения для указанного контекст устройства.

Используется только копия выбранного региона. Сама область может быть выбрана для любого количества других контекстов устройства или может быть удалена.

Функция SelectClipRgn предполагает, что координаты региона указаны в единицах измерения устройства.

Чтобы удалить область отсечения контекста устройства, укажите дескриптор области NULL.

1
ответ дан 7 December 2019 в 03:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: