Я бы работал по регионам. 
1. Создем глобальный регион размером с картинку CreateRectRgn(0, 0, BitMap.Width, BitMap.Height) 
2. Бегаем по строкам и столбцам битмапа 
2.1 Если точка НЕ входит в глобальный регион, то идем в 2, иначе (2.2) 
2.2 "выделяем пятно" от этой точки процедурой _Do из моего предыдущего поста. 
2.3 Выделив регион удаляем, его из глобального 
 
По такому алгоритму пятна никак не сольются воедино. 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 |