dataWithPDFInsideRect malt mir den falschen Ausschnitt

  • dataWithPDFInsideRect malt mir den falschen Ausschnitt

    Also irgendwie stehe ich auf dem Schlauch, jedenfalls habe ich keine Idee, woran das liegen kann.
    Ich zeichne eine schönen View, alles in seinem Frame, in etwa

    Quellcode

    1. - (void)drawRect:(NSRect)rect {
    2. NSRect r = [self frame];
    3. // zeichne alles in Bezug auf "r"
    4. ...
    5. }

    Das sieht auch wunderbar aus:
    osxentwicklerforum.de/index.php/Attachment/2097/

    Wenn ich dann diesen View als PDF speichern will, nehm ich nur diese zwei Zeilen

    Quellcode

    1. NSData *pdfdata = [ldist_view_ dataWithPDFInsideRect:[ldist_view_ frame]];
    2. [pdfdata writeToFile:[save filename] atomically:YES];

    also genau den aktuellen Frame des Views, mit dem ja auch gezeichnet wird.
    Das Ganze wird dann aber ganz doof verschoben:
    osxentwicklerforum.de/index.php/Attachment/2098/

    Was mach ich hier falsch?
    C++
  • zerm schrieb:

    Also irgendwie stehe ich auf dem Schlauch, jedenfalls habe ich keine Idee, woran das liegen kann.
    Ich zeichne eine schönen View, alles in seinem Frame, in etwa

    Quellcode

    1. - (void)drawRect:(NSRect)rect {
    2. NSRect r = [self frame];
    3. // zeichne alles in Bezug auf "r"
    4. ...
    5. }

    Das sieht auch wunderbar aus:
    osxentwicklerforum.de/index.php/Attachment/2097/

    Wenn ich dann diesen View als PDF speichern will, nehm ich nur diese zwei Zeilen

    Quellcode

    1. NSData *pdfdata = [ldist_view_ dataWithPDFInsideRect:[ldist_view_ frame]];
    2. [pdfdata writeToFile:[save filename] atomically:YES];

    also genau den aktuellen Frame des Views, mit dem ja auch gezeichnet wird.
    Das Ganze wird dann aber ganz doof verschoben:
    osxentwicklerforum.de/index.php/Attachment/2098/

    Was mach ich hier falsch?
    Du meinst unten beschnitten ?? Kann das sein, das der View großer als das "Papier" ist ?
  • wolf_10de schrieb:

    Du meinst unten beschnitten ?? Kann das sein, das der View großer als das "Papier" ist ?

    Ja, also unten fehlt was, oben ist was zu viel.
    Ich geb ja gar keine "Papier"-Grösse an, der soll mir halt einfach nur aus dem View ein PDF machen.
    Ich könnte wahrscheinlich im dataWithPDFInsideRect:-Aufruf zum y-origin einfach was dazu addieren (oder subtrahieren?) dann würde es wahrscheinlich passen. Das wäre jetzt ja aber nicht die sauberste Lösung :)
    C++
  • Ich rätsel hier immernoch. Hat keiner mal eine Erleuchtung für mich?

    EDIT:
    Mhh, wenn ich den origin auf 0 setze, scheint es zu passen;

    C-Quellcode

    1. NSRect view_frame = [ldist_view_ frame];
    2. NSData *pdfdata = [ldist_view_ dataWithPDFInsideRect:NSMakeRect(0,0,view_frame.size.width,view_frame.size.height)];
    C++

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von zerm ()

  • zerm schrieb:

    Mhh, wenn ich den origin auf 0 setze, scheint es zu passen;
    Wenn Du den ganz View Inhalt haben möchtest, muss Du die origin auf 0 setzen. Der Frame eines Views sind seine Koordinaten im Superview.
    Xcode 4 sucks – „,Multiple exclamation marks‘, he went on, shaking his head, are a sure sign of a diseased mind.‘“ (Terry Pratchett 1992: Eric)

    "Wir ordnen und befehlen hiermit allen Ernstes, dass die Advocati wollene schwarze Mäntel, welche bis unter das Knie gehen, unserer Verordnung gemäß zu tragen haben, damit man die Spitzbuben schon von weitem erkennt." (Friedrich Wilhelm I., Soldatenkönig)