2017-01-23 8 views
1

시에라에서 시작하여 pdf drawWithBox:toContext: 작업을 사용할 수 있습니다. 그러나 이전 OS 버전에서는 이것이 존재하지 않습니다. 그래픽 컨텍스트가있을 때 컨텍스트가있는 곳 (예 : drawRect:)에서 전신 인 drawWithBox:이 제대로 작동했습니다. 그러나 그러한 컨텍스트가없는 경우 drawWithBox:을 사용할 방법이 없습니다 ("있을 수도 있음"이라는 임의의 컨텍스트를 취하는 것을 제외하고). 나는이 시도 :현재 컨텍스트가없는 PDFPage 그리기

_contextRef = 
    CGBitmapContextCreate(_cvMat.data, ... 

... 

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

을하지만 그건 단지

를 덤프 - [__ NSCFType graphicsPort] : 인식 할 수없는 선택이 아닌 오류 메시지가 발생 (또는 수요가있는 경우 0x7f8de1e219a0

로 전송) 매우 자주.

+0

가능한 복제본 [Mac OS X : CGContextRef C 함수를 사용하여 화면 밖 NSGraphicsContext로 그리기는 아무 효과가 없습니다. 왜?] (http://stackoverflow.com/questions/10627557/mac-os-x-drawing-into-an-offscreen-nsgraphicscontext-using-cgcontextref-c-funct) - 확실히 이것은 중복입니다 :-) –

답변

0

문제는 CGContextRefNSGraphicsContext은 같은 것이 아닙니다. NSGraphicsContext 인스턴스가있을 때 +[NSGraphicsContext setCurrent:]CGContextRef으로 호출하면됩니다.

좋은 소식

은 아주 쉽게 CGContext에서 NSGraphicsContext을 만들 수 있다는 것입니다 : 그건 당신이 당신이 기대하는 당신의 PDF를 그릴 수 있습니다 경우
CGContextRef cgContext; 
NSGraphicsContext *newContext = [[NSGraphicsContext alloc] initWithCGContext:cgContext flipped:NO]; 
[NSGraphicsContext setCurrent: newContext]; 

을 참조하십시오.

+0

초기화 프로그램을 어디에서 가져 왔습니까? 내 NSGraphicsContext.h에는 CGContext 관련 메서드가 없으므로 컴파일러가 잘못되었습니다. _ NSGraphicsContext에 대한 @interface는 selector 'initWithCGContext : flipped :'를 선언합니다. _ –

+0

어쨌든, 올바른 방향으로 나를 인도하고 http를 발견했습니다. : //stackoverflow.com/questions/10627557/mac-os-x-drawing-into-an-offscreen-nsgraphicscontext-using-cgcontextref-c-funct 내 문제를 해결했습니다. –