В самом простом случае вам нужно вызывать CreateRectRgn
несколько раз, передавая однопиксельный прямоугольник для каждого пурпурного пикселя. Затем вы объедините эти регионы вместе, используя CombineRgn
.
Очевидные оптимизации включают в себя:
- с использованием секции DIB вместо
GetPixel
для сканирования исходного изображения.
- ищет однорядные серии с одним и тем же пикселем, чтобы вы не комбинировали области 1 x 1.
- ищет многострочные блоки одного и того же пикселя, чтобы вы не объединяли 1 x n областей.
Это сказало: зачем вам HRGN? Не могли бы вы преобразить исходное растровое изображение в растровое изображение маски?