2012-04-04 2 views
1

Я пытаюсь покрасить заданную область растрового изображения. После показа его на экране. В настоящее время я использую следующий подход: Представлены bitmap CGContextRef и двумерный массив бит - которым мы знаем, какой пиксель для цвета. Затем петля выбрасывает этот массив и рисует эллипс: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); 
     } 
    } 
} 

Это решает проблему, но работает слишком медленно. Пожалуйста, предоставьте любую другую идею. Может быть, есть решение, использующее Quartz?

+0

Могу ли я узнать, какой образ вы хотите цвета. просто пометьте простое изображение здесь и сообщите, какую часть вы хотите цвета .. чтобы мы могли вам помочь .. – Aravindhan

+0

Это любое черно-белое изображение, например, в книгах для раскраски детей. Затем я хочу покрасить определенный домен. – Robert

ответ

1

Вы можете использовать Flood fill Algorithm для раскрашивания изображений, которые будут выполнены очень быстро и эффективно. Objective-c версия алгоритма заливки заливки Here.

+0

Да, и я уже реализовал этот алгоритм. Я основал по вашей ссылке отличную идею о цвете домена - мне просто нужно установить соответствующие байты данных растрового изображения следующим образом: 'code' int byteIndex = (bytesPerRow * y) + x * bytesPerRow/width; rawData [byteIndex] = красный; rawData [byteIndex + 1] = синий; rawData [byteIndex + 2] = зеленый; 'code' И это работает очень быстро! Поэтому моя проблема решена. Спасибо. :) – Robert

+0

welcome .............. :) – Aravindhan

+2

Могу ли я найти базовый пример его реализации в любом месте? или поэтапный процесс, чтобы включить его в свой проект? –