Eine Linie zeichnen und ein Pixel setzen.

  • Merkwürdig, denn eigentlich sieht es gut aus.
    Hat das 'NSImage' schon eine andere 'NSBitmapImageRep'?

    Am besten sollte man es selbst erzeugen mit:

    Quellcode

    1. NSImage *anImage = [[NSImage alloc]initWithSize:aSize];
    2. ...// wie gehabt
    3. [anImage addRepresenation: [bitmapRep autorelease];

    'autorelease' hier, wg. 'alloc' bei Deiner 'bitmap', nur am Rande.
    I would be embarrassed if they did not spy on me.
  • Vielen Dank longW, das wars !

    habe die letzen 2 Zeilen meines Codes durch folgende 3 ersetzt:

    Quellcode

    1. NSImage* anImage=[[NSImage alloc]initWithSize:NSMakeSize(8,8)];
    2. [anImage addRepresentation:[bitmap autorelease]];
    3. [setgraph setImage: anImage];


    Hurrraaaaaah es TuuuuuuuT

    Ich dachte der NSImageView wird schon standartmäßig ein Image zugefügt? Ist wohl nicht so oder ?

    Sonst müsste ja kein neues allokiert werden.

    Sollte man das autorelease nicht schon beim initialiesieren der bitmap(rep) machen ?

    Bei der Speicherverwaltung ist mir allerdings mulmig. Ich mag keine unsicheren Programme.

    Aber freu mich dass es nun funktioniert.

    Mas sehen was bastel ich denn nun, ein Apfelmännchen in 3D oder eins mit feinen Strukturen hochaufgelöst in s/w. Mal schauen ;)

    Viele Grüße Andrea.



    PS: Peitgen und Richter liegen bereit
  • Original von Andrea
    [[setgraph image] addRepresentation:bitmap ];
    [[setgraph image] drawRepresentation:bitmap inRect:NSMakeRect(0,8,8,8)];
    drawRepresentation geht m.E. nur zwischen lockFocus und unlockFocus. D.h. die ganzen Dreh- und Mal-Transformationen müssen sich auf relative Koordinaten beziehen ("Focus").

    Ist setgraph ein NSView (oder Subklasse?), dann

    Quellcode

    1. [setgraph lockFocus];
    2. [[setgraph image] drawRepresentation:bitmap inRect:NSMakeRect(0,8,8,8)];
    3. [setgraph unlockFocus];

    Später gehört das dann in -drawRect (wo das System schon den lock/unlock macht).

    Siehe mein Vorschlag von früher, NSImageView zu verwenden. Und das dort angezeigte NSImage mit einer eigenen NSBitmapImageRep versehen.

    Ah, falls setgraph schon ein NSImageView ist, dann rufe auf:

    Quellcode

    1. [setgraph setNeedsDisplayInRect:NSMakeRect(0,8,8,8)];


    -- hns
  • Original von Andrea
    [[setgraph image] drawRepresentation:bitmap inRect:NSMakeRect(0,8,8,8)];


    nur der vollständigkeithalber: koordinaten in cocoa sind floats!

    NSMakeRect
    Creates a new NSRect from the specified values.

    Quellcode

    1. NSRect NSMakeRect(float x, float y, float w, float h)

    snafu
    :() { :|: &};:
    sometimes i dream in hex
    Obey gravity! Because its a law!
  • Hallo hns und chartus,

    chartus: Dass Zeichenkoordinaten floats sind wusste ich.

    hns:

    Ich dachte es nach Deinem Vorschlag gemacht zu haben. Es ging mir aber nicht um Zeichenoperationen. Diese werden wohl nach anderen, wenn auch ähnlichen Prinzipien getätigt. Beim Bitmap geht es ja um eine indizierte Menge ( also abzählbar und somit int) von ausgefüllten Rechtecken, Da darf keine Transformationsmatrix angewendet werden. Die Transformationen sollen ja nur auf die Bitmap als gesamte Einheit erfolgen. ( wenn überhaupt)

    Bei Bitmaps von einer Größe vom mindestens 4096x4096 Pixel werde ich das Ganze wohl in eine ScrollView einbinden müssen. Außerdem werden Mausabfragen nötig.

    Ob es da nicht doch besser ist zeichentechnisch zu arbeiten , zumal bei meinem ( ääh Peitgen/Richters) Algorithmus auch ausgefüllte Kreise gezeichnet werden müssen ? Diese dienen aber nur zum Ausfüllen von gröberen Flächen( Beschleunigung). Die feinen Strukturen der Grenzlinien sind jedoch fraktaler Dimension und somit ist an diesen Stellen eine Vektorisierung ineffizient.

    Das was ich da machen will hab ich vor vielen Jahren schonmal erfolgreich auf Linux mit QT-Lib und C++ umgesetzt.
    Hier ein Beispielbild: hpandrea.de/fraktalesw/Netz.gif

    Cocoa wir da doch wohl nicht streiken.

    Sonst prog ich das mit Vektoren und dann in 3D als Wireframe ( hübsch hässlich).

    Gruß

    Andrea