Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, _ ByVal Y1 As Long, _ ByVal X2 As Long, _ ByVal Y2 As Long) As Long
CreateEllipticRgn создает область в виде эллипса, вписанного в прямоугольник, определенный координатами, передаваемые функцией. Ограничительный прямоугольник - самый маленький возможный прямоугольник, который может соответствовать эллипсу. Не забывайте удалять регион функцией DeleteObject, если вы больше в нем не нуждаетесь
Функция возвращает описатель созданной области в успешном случае или 0 в случае ошибки(используйте GetLastError для получения кода ошибки)
' смотри также пример region.zip ' Инвертируем пикселы в пределах области эллипса на окне Form1. ' Область имеет ограничительный прямоугольник (20,30) - (150,110) Dim hrgn As Long ' описатель области Dim lRet As Long ' возвращаемое значение ' Создаем область-эллипс, чтобы инвертировать и получить описатель hrgn = CreateEllipticRgn(20,30,150,110) ' ограничительный прямоугольник (20,30)-(150,110) ' инвертируем эту область в окне Form1 lRet = InvertRgn(Form1.hDC, hrgn) ' освобождаем ресурсы системы retval = DeleteObject(hrgn)