2012-11-07 5 views
3

내 Mac 응용 프로그램의 레이블에 내부 그림자를 얻으려고합니다.NSTextField 내부 그림자

내 디자이너가 보낸 Photoshop 디자인과 일치 시키려고합니다. 내가 일치하도록 노력하고 모습이다 :이 유형에 대한 여러 가지 솔루션을 보았다 Photoshop Settings

: Photoshop Design

이 포토샵에서 수행되고있는 방법은 다음과 같은 설정으로 내부 그림자를 설정하는 것입니다 여기 다른 사이트에있는 것 중 아무 것도 제대로 작동하지 않습니다. 물건의

[[myNSTextField cell] setBackgroundStyle:NSBackgroundStyleRaised]; 

내가 찾은 많은 레이블이있는 NSBezierPath에 내부 그림자를하고 또는 유사하지만 대한 예를 모두 들어

는 사용했다.

는 는

질문에 대한이 답변은 위의 setBackgroundStyle을 사용 말한다 다음 귀하의 그라데이션 배경은 다음 NSGradient

그러나 경우에 사용자 정의보기를 사용하여 예를 들어 도달 할 수

에 말한다 이 전망은 어때? 텍스트가 아닌 창에서 내부 그림자를 수행하는 방법에 대한 답변 참조 링크.

누구든지 나를 도와 줄 수 있습니까?

감사합니다.

답변

4

이 효과는 Photoshop에서 매우 쉽게 만들 수 있습니다. 불행히도 코코아 애플리케이션에서는 그리 간단하지 않습니다. 표준 컨트롤로 쉽게 할 수있는 방법을 모르지만 문제를 어떻게 처리 할 것인지 알려 드리겠습니다.

문제는 그림자를 객체와 객체에 드롭해야한다는 것입니다. 즉, 그림자는 항상 모달이며 실제 객체가 없으면 그림자를 그릴 수 없습니다. 코어 그래픽에서 그림자는 드로잉 컨텍스트의 속성입니다. 객체를 렌더링 할 때 그림자 효과를 프로세스에 추가 할 수 있습니다. 우리가 진짜 문제를 알고

지금,이 솔루션은

이의 여기에서 말하는 텍스트에서 생성 된 이미지가 보자 케이크 :)의 조각입니다. 인터넷에서 비트 맵 컨텍스트에 텍스트를 렌더링하는 방법을 찾을 수 있습니다.

이 전환 :

enter image description here

는 당신은 할 필요가있다.

enter image description here

아래 이미지 (비트 맵 컨텍스트)에 그림자를 렌더링.

enter image description here

는 반전 화상을 제외한 화상 마스크.

enter image description here

은 당신이 가지고있는 배경 질감에 결과 이미지를 렌더링합니다.

enter image description here

나는 NSView의 서브 클래스를 만들고 레이어에이 모든 물건을 그릴 것입니다. 비트 맵 컨텍스트를 작성하고 그 위에 그릴 수있는 방법의 예를 찾을 수 있습니다. 다음은 마스크 작업 방법입니다. https://developer.apple.com/library/mac/#documentation/graphicsimaging/conceptual/drawingwithquartz2d/dq_images/dq_images.html

도움이 되었기를 바랍니다.