2017-01-23 4 views
1

A partir de Sierra le pdf est drawWithBox:toContext: disponible. Mais dans les versions précédentes de l'OS, cela n'est pas présent. Lorsqu'il existe un contexte graphique, le prédécesseur drawWithBox: a bien fonctionné, quel que soit le contexte (par exemple drawRect:). Mais si vous n'avez pas un tel contexte, je ne vois pas comment utiliser drawWithBox: (sauf pour prendre un contexte aléatoire qui pourrait être présent). J'ai essayé ceci:Dessiner PDFPage sans contexte actuel

_contextRef = 
    CGBitmapContextCreate(_cvMat.data, ... 

... 

if (v12) { 
    [page drawWithBox:kPDFDisplayBoxBleedBox toContext:cgContext]; 
} else { 
    [NSGraphicsContext setCurrentContext:(__bridge NSGraphicsContext * _Nullable)(cgContext)]; 
    [page drawWithBox:kPDFDisplayBoxBleedBox]; 
} 

mais juste largué

- [__ NSCFType graphicsPort]: sélecteur non reconnu envoyé à l'instance 0x7f8de1e219a0

qui n'est pas un message d'erreur rencontré (ou recherché) très souvent.

+0

Copie possible de [Mac OS X: Dessiner dans un NSGraphicsContext hors écran à l'aide des fonctions CGContextRef C n'a aucun effet. Pourquoi?] (Http://stackoverflow.com/questions/10627557/mac-os-x-drawing-into-an-offscreen-nsgraphicscontext-using-cgcontextref-c-funct) - Il s'agit certainement d'un doublon :-) –

Répondre

0

Le problème que vous avez est que CGContextRef et NSGraphicsContext ne sont pas la même chose. Vous appelez +[NSGraphicsContext setCurrent:] avec un CGContextRef lorsqu'il attend une instance NSGraphicsContext.

Les bonnes nouvelles est que vous pouvez créer un NSGraphicsContext d'un CGContext assez facilement:

CGContextRef cgContext; 
NSGraphicsContext *newContext = [[NSGraphicsContext alloc] initWithCGContext:cgContext flipped:NO]; 
[NSGraphicsContext setCurrent: newContext]; 

voir si cela vous permet de dessiner votre PDF où vous vous attendez.

+0

Où avez-vous trouvé cet initialiseur? Mon NSGraphicsContext.h n'a aucune méthode liée au CGContext et donc le compilateur croque: _No visible @interface pour 'NSGraphicsContext' déclare le sélecteur 'initWithCGContext: flipped:' _ –

+0

Quoi qu'il en soit, vous me menez dans la bonne direction et j'ai trouvé http : //stackoverflow.com/questions/10627557/mac-os-x-drawing-into-an-offscreen-nsgraphicscontext-using-cgcontextref-c-funct qui a résolu mon problème. –