Declare Function CreateEllipticRgnIndirect Lib "gdi32" (lpRect As RECT) As Long
CreateEllipticRgn создает область в виде эллипса, вписанного в ограничительный прямоугольник. Ограничительный прямоугольник - самый маленький возможный прямоугольник, который может соответствовать эллипсу
Функция возвращает описатель созданной области в успешном случае или 0 в случае ошибки.
' Инвертируем пикселы в пределах области эллипса на окне Form1. ' Область имеет ограничительный прямоугольник (20,30) - (150,110) Dim hrgn As Long ' описатель области Dim bounding As RECT ' ограничительный прямоугольник Dim retval As Long ' возвращаемое значение ' загрузим координаты ограничительного прямоугольника в структуру retval = SetRect(bounding, 20, 30, 150, 110) ' создаем эллипс от этого ограничительного прямоугольника hrgn = CreateEllipticRgnIndirect(bounding) ' инвертируем эту область в окне Form1 retval = InvertRgn(Form1.hDC, hrgn) ' удаляем область для освобождения ресурсов системы retval = DeleteObject(hrgn)