2012-04-04 3 views
1

비트 맵의 ​​특정 부분을 색칠하려고합니다. 화면에 보여준 후. 현재 다음 방법을 사용합니다. 비트 맵 CGContextRef과 비트의 2 차원 배열을 나타내는데,이를 통해 어느 픽셀을 색칠할지 알 수 있습니다. 그런 다음 루프가이 배열을 던지고 타원을 그립니다.IoS 주어진 색상으로 된 코코아 영역을 채우기

for(int i = 0; i < width; i++){ 
    for(int j = 0; j < height; j++){ 
     if(colormask[i][j] == 1){ 
      CGRect circleRect = CGRectMake(i, j, 1, 1); 
      CGContextSetRGBFillColor(bitmap, red, green, blue, 1.0); 
      CGContextFillEllipseInRect(bitmap, circleRect); 
     } 
    } 
} 

이렇게하면 문제가 해결되지만 너무 느립니다. 다른 아이디어를 제공해주십시오. 어쩌면 석영을 사용하는 해결책이 있을까요?

+0

어떤 이미지를 원하는지 알 수 있습니까? 여기에 간단한 이미지에 태그를 달아 색상을 원하는 부분을 말하십시오 .. 우리가 당신을 도울 수 있도록 .. – Aravindhan

+0

예를 들어 아이들을 색칠하는 책의 흑백 이미지입니다. 그런 다음 특정 영역에 색상을 지정하려고합니다. – Robert

답변

1

이미지를 채우는 데 Flood fill Algorithm을 사용할 수 있습니다. 매우 빠르고 효율적입니다. 홍수 채우기의 목표 -C 버전 알고리즘은 Here입니다.

+0

예, 이미이 알고리즘을 구현했습니다. 내가 당신의 링크로 좋은 아이디어를 도메인에 착색하는 방법을 만들었습니다. 다음과 같이 비트 맵 데이터의 적절한 바이트를 설정하면됩니다 : 'code' int byteIndex = (bytesPerRow * y) + x * bytesPerRow/width; rawData [byteIndex] = 빨강; rawData [byteIndex + 1] = 파란색; rawData [byteIndex + 2] = 초록색; 'code' 그리고 이것은 정말 빠르게 작동합니다! 그래서 내 문제가 해결되었습니다. 고맙습니다. :) – Robert

+0

환영합니다 .............. :) – Aravindhan

+2

어디서나 구현의 기본 예제를 찾을 수 있습니까? 프로젝트에 단계별 프로세스를 포함시킬 수 있습니까? –