2012-04-04 10 views
1

Ich versuche den angegebenen Bereich der Bitmap zu färben. Nach dem Erscheinen auf dem Bildschirm. Derzeit verwende ich folgenden Ansatz: Es gibt Bitmap CGContextRef und zweidimensionale Array von Bits - durch die wir wissen, welches Pixel zu färben. Dann wirft eine Schleife dieses Array und zeichnet eine Ellipse:IoS Cocoa füllen Bereich mit gegebener Farbe

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); 
     } 
    } 
} 

Das löst das Problem aber funktioniert zu langsam. Bitte geben Sie eine andere Idee an. Vielleicht gibt es eine Lösung mit Quarz?

+0

Darf ich wissen, welches Bild Sie möchten, Farbe. einfach ein einfaches Bild hier zu markieren und sagen, welcher Teil Sie Farbe .. wollen, damit wir Ihnen helfen können .. – Aravindhan

+0

Dies ist ein Schwarz-Weiß-Bild wie zum Beispiel in Kinder Malbücher. Dann möchte ich bestimmte Domäne davon färben. – Robert

Antwort

1

Sie können Flood fill Algorithm zum Einfärben des Bildes verwenden, es wird sehr schnell und effizient sein. Objective-c-Version des Flutfüllalgorithmus ist Here.

+0

Ja und ich habe diesen Algorithmus bereits implementiert. Durch die ich von Ihrem Link große Idee gegründet, wie Domain färben - ich muss nur entsprechende Bytes von Bitmap-Daten wie folgt festgelegt: 'code' int ByteIndex = (bytesPerRow * y) + x * bytesPerRow/Breite; rawData [byteIndex] = rot; rawData [byteIndex + 1] = blau; rawData [byteIndex + 2] = grün; 'code' Und das funktioniert wirklich schnell! So ist mein Problem gelöst. Vielen Dank. :) – Robert

+0

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

+2

Kann ich ein grundlegendes Beispiel seiner Implementierung überall finden? oder Schritt für Schritt, um es in Ihr Projekt aufzunehmen? –