Hallo Zusammen!
Ich möchte ein Image Pixel für Pixel selber zeichnen (die Farbe für jeden Pixel muss einzelnd berechnet werden).
Da ich (bis jetzt) keine Möglichkeit gefunden habe, wie man in Cocoa nur genau einen Pixel mit einer bestimmten Farbe zeichnet, habe ich eine Lösung mittels QuickDraw gefunden:
1. Mittels "NewGWorld" eine off-screen QuickDraw GWorld erzeugen
2. Die gewünschten QuickDraw-Zeichenoperationen in diese GWorld machen (in meinem Fall jeden Punkt mit "SetCPixel" setzten).
3. Über "CopyBits" das erstellte Bild (also den Inhalt der GWorld) in eine NSQuickDrawView kopieren.
Das läuft soweit und ist auch einigermaßen schnell (viel, viel schneller, als wenn ich direkt in die NSQuickDrawView zeichnen würde)
Jetzt kommt aber das Problem:
Wie bekomme ich dieses erzeugte Bild in einen anderen Context z.B. in eine Zelle einer NSTableView?
Man kann sich zwar ein Bild mit Cocoa, ähnlich wie in QuickDraw oben beschrieben, selbst erzeugen (und zwar über ein NSCachedImageRep-Objekt), aber dann habe ich wieder das Problem, dass ich nicht weiß, wie ich jeden Pixel einzeln setzen kann.
Eine Lösung wäre es, wenn man der QuickDraw-Umgebung mitteilen könnte, doch bitte seine Zeichen-Funktionen auf den CoreGraphics-Context zu beziehen (den erhält man über [[NSGraphicsContext currentContext] graphicsPort]).
Wenn man den aber mit SetGWorld setzt, bleibt das Programm bei der ersten QuickDraw-Zeichenfunktion stehen.
Also, das einfachste wäre, wenn man mittels Cocoa/CoreGraphics einen einzelnen Punkt mit einer bestimmten Farbe malen könnte (ohne dass man jür jeden Punkt ein eigenes NSColor-Objekt anlegen muss).
Ich bin für jede Hilfe dankbar!
Ich möchte ein Image Pixel für Pixel selber zeichnen (die Farbe für jeden Pixel muss einzelnd berechnet werden).
Da ich (bis jetzt) keine Möglichkeit gefunden habe, wie man in Cocoa nur genau einen Pixel mit einer bestimmten Farbe zeichnet, habe ich eine Lösung mittels QuickDraw gefunden:
1. Mittels "NewGWorld" eine off-screen QuickDraw GWorld erzeugen
2. Die gewünschten QuickDraw-Zeichenoperationen in diese GWorld machen (in meinem Fall jeden Punkt mit "SetCPixel" setzten).
3. Über "CopyBits" das erstellte Bild (also den Inhalt der GWorld) in eine NSQuickDrawView kopieren.
Das läuft soweit und ist auch einigermaßen schnell (viel, viel schneller, als wenn ich direkt in die NSQuickDrawView zeichnen würde)
Jetzt kommt aber das Problem:
Wie bekomme ich dieses erzeugte Bild in einen anderen Context z.B. in eine Zelle einer NSTableView?
Man kann sich zwar ein Bild mit Cocoa, ähnlich wie in QuickDraw oben beschrieben, selbst erzeugen (und zwar über ein NSCachedImageRep-Objekt), aber dann habe ich wieder das Problem, dass ich nicht weiß, wie ich jeden Pixel einzeln setzen kann.
Eine Lösung wäre es, wenn man der QuickDraw-Umgebung mitteilen könnte, doch bitte seine Zeichen-Funktionen auf den CoreGraphics-Context zu beziehen (den erhält man über [[NSGraphicsContext currentContext] graphicsPort]).
Wenn man den aber mit SetGWorld setzt, bleibt das Programm bei der ersten QuickDraw-Zeichenfunktion stehen.
Also, das einfachste wäre, wenn man mittels Cocoa/CoreGraphics einen einzelnen Punkt mit einer bestimmten Farbe malen könnte (ohne dass man jür jeden Punkt ein eigenes NSColor-Objekt anlegen muss).
Ich bin für jede Hilfe dankbar!