Eine Linie zeichnen und ein Pixel setzen.

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Ich glaube, ich komme nicht mehr so ganz hinterher...

    longW hat doch recht anschaulich erklärt, wie du deine Pixel malen kannst....
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Original von M.A.X
    Die kompletten Zeichen-Routinen unter OS X sind vektorbasiert.
    Das stimmt so nicht.

    NSBitmapImageRep ist und bleibt auch in Zukunft pixelorientiert. Auf einem höher auflösenden Bildschirm kann das aber interpoliert werden... Und genau das wird (*) das System automatisch machen.

    *) genaugenommen macht es das heute schon. Das mit "Resolution Independence" kann schon MacOS X 10.4 fast vollständig. Es wird meiner Meinung nach mit Tiger neu/besser vermarktet

    @andrea
    MacOS X kann viele Standardformate mit einer Code-Zeile lesen und schreiben:

    [[image TIFFRepresentation] writeToFile:@"/Users/hns/..." atomically:YES];

    -- hns
  • Hallo Andrea,

    wenn ich wieder auf meinen Webspace zugreifen kann, werde ich ein Programm von mir hochladen, welches pixelbasiert arbeitet (Feigenbaum-Diagramm erstellt). Allerdings ist dieses nicht einfach zu verstehen, da es kaum kommentiert ist. Ein weiteres Manko ist, dass es nicht in einem extra Thread zeichnet.

    Die Zeichenroutine ist in einer extra Klasse, in FeigenbaumRenderer.h. Dabei wird ein NSBitmapImageRep angelegt, dort ein unsigned char * Array über -()bitmapData geholt und dann manuell jeder Punkt gesetzt.
    There are 10 kinds of people in the world - those who understand binary
    and those who don't.
  • Hallo Tom,

    ich war nie wirklich weg, habe aber nur zugeschaut :). (Irgendwie komme ich kaum noch zum programmieren...)
    Hm, am 23. und 24.6 habe ich eigentlich schon etwas vor, aber ich schaue mal, vielleicht kann ich da was ändern.

    Viele Grüße
    Alex
    There are 10 kinds of people in the world - those who understand binary
    and those who don't.
  • Hallo Squart,

    das Programm interessiert mich. Ist es denn sehr komplex mit Cocoa einen Thread zu erzeugen ?
    Zum Testen von Python hab ich mal ein kleines Python Miniprogrämmchen geschrieben welches die newtonsche Iterationsmethode der Exponentalfunktion darstellt, bei einer Auflösung von 4096 x 4096 Pixeln. Gedruckt sieht das interessant aus. Programm , Quellcode und Grafik ist hier : hpandrea.de/mac/python/NewtonExp.zip Sowas wäre mit Cocoa interessant.


    Gruß

    Andrea
  • Hallo Squart,

    danke Dir für Deine Mühe. Das Programm gefällt mir. Besondes weil ich auch die Bitmapzugriffe per NSBitmapImageRep dort erkennen kann.

    Viele Grüße

    Andrea





    PS: Objective C & Cocoa schein ja doch ganz brauchbar, vielleicht vergess ich dann Python ;)

    Was ist eigentlich ein AppController ?
  • Danke schön :). Falls du Farben verwenden willst, solltest du dir noch andere Beispiele anschauen (cocoadev.com/index.pl?MakingFractalsUsingBitmapImageRep)

    Der AppController ist für dieses kleine Programm der einzige Controller (MVC-Modell), also die Schnittstelle zwischen Interface (den Buttons, TextFeldern und der SaveImageView [welche ich übrigens nur aus Faulheit angelegt habe]) und dem Model (also FeigenbaumRenderer bzw. NSImage).
    There are 10 kinds of people in the world - those who understand binary
    and those who don't.
  • Hallo Anim und alle anderen,


    Um Threds zu verwenden, können doch Objekte mit @synchonized behandelt werden, oder? Ist doch das gleiche Prinzip wie bei java, oder irre ich da ?

    Hab heute das Buch Objective-C und Cocoa erweiterte Auflage erhalten. Das Buch gefällt mir sehr gut. Es sehr gründlich fundiert gestaltet. Respekt für die Arbeit. Genau das, was ich suchte. Zumal ich ja nicht nur Grafik programmiere.


    Gruß

    Andrea
  • Ja, du kannst @ynchronized benutzen. NSLock und Subklassen dürften aber einfacher sein. Leider sind sie nicht mehr im Buch gelandet. :(

    Ansonsten bedanke ich mich für das Kompliment und hoffe auf eine Rezension. ;)

    BTW, bevor du fragst: Seite zum Buch
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • bezüglich @synchronized und NSLock: habe bisher nur NSLock verwendet um zu verhindern dass von verschiedenen threads zur gleichen zeit auf meine Objekte (meist MutableArray, MutableDict, MutableSet) zugegriffen wird - doch jetzt habe ich gesehen dass @syncronized wohl doch die bessere Lösung wäre weil man sich da das ganze exception-handling spart - oder irre ich jetzt (welche nachteile hat @syncronized?).

    kann man bei @syncronized zb sowas machen:

    Quellcode

    1. - (NSArray *)kopieMeinerInstanzvariable
    2. {
    3. @syncronized(_meinMutablesArray)
    4. {
    5. return [NSArray arrayWithArray:_meinMutablesArray];
    6. }
    7. }
    oder muss das dann doch so aussehen:

    Quellcode

    1. - (NSArray *)kopieMeinerInstanzvariable
    2. {
    3. NSArray *theCopy = nil;
    4. @syncronized(_meinMutablesArray)
    5. {
    6. theCopy = [NSArray arrayWithArray:_meinMutablesArray];
    7. }
    8. return theCopy;
    9. }
    Übrigens - wäre es schlauer sowas mit [[_meinMutablesArray copy] autorelease] zu machen anstelle arrayWithArray?

    sorry dass es net zum thread passt...!
  • Neee, gerade umgekehrt ist es. IIRC benutzt NSLock @syncrhonized.
    If you do not want the additional overhead caused by the implicit exception handler, you should consider using the lock classes.


    Ob du den convenience Copy oder ein selbstgestrickten verwendest, ist ziemlich gleichgülltig. In vielen Fällen sieht arrayWithArray: so aus: return [[self copy] autorelease].

    Es ist dasselbe Spielchen wie mit convenience Allocator versus +alloc/-init/-autorelease. Bei Copy darf man halt das -release oder -autorelease nicht vergessen.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Hallo Anim,

    Ansonsten bedanke ich mich für das Kompliment und hoffe auf eine Rezension. ;)


    das werde ich gerne tun. Jedoch erst nachdem ich das Buch zumintest teilweise durchgearbeitet habe. Denn dann wird die Rezension hilfreicher.


    Gruß

    Andrea
  • Wir sehen, dass wir nichts sehen !

    Es geht um NSBitmapImageRep

    Habe ein NSImageView einen Button und einen Text in einer Nib erzeugt. Ein Action sowie ein Outlet zum Ändern des Textes und ein Outlet zum Ändern der Bitmap. (MVC kommt später)

    Nach dem Klicken auf den Button soll also Textfeld und Grafik geändert werden.
    Mir gehts dabei um den Bitmapzugriff. Laut Log findet der auch fehlerfrei statt.

    hier der Bitmapzugriff:

    Quellcode

    1. [settext setStringValue:@"ok"];
    2. NSBitmapImageRep *bitmap = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes: NULL
    3. pixelsWide:8 pixelsHigh:8
    4. bitsPerSample:8 samplesPerPixel:4 hasAlpha:YES isPlanar:YES
    5. colorSpaceName:@"NSCalibratedRGBColorSpace" bytesPerRow:32
    6. bitsPerPixel:32];
    7. [bitmap setColor:[NSColor colorWithCalibratedRed:0 green:0 blue:0 alpha:1.0] atX:0 y:0];
    8. [[setgraph image] addRepresentation:bitmap ];
    9. [[setgraph image] drawRepresentation:bitmap inRect:NSMakeRect(0,8,8,8)];


    Da sollte eigentlich ein schwarzes Pixel zu sehen sein. :(
    An der Position x/y 0,8

    verzweifelt um Hilfe bitte !

    Grüzlies

    Andrea