2017-03-10 7 views
0

나는 NSImage로 생성 된 이미지를 가지고있다. 그런 다음 사용자 정의 draw() 메소드를 사용하여 NSView 서브 클래스에 드로잉한다.NSImage를 그리지 만 옆으로 페이드 아웃하는 방법 (선형 알파 그래디언트)?

이 사용자 지정보기를 수정하여 이미지가 같은 위치에 그려 지지만 옆면이 흐려 지도록합니다. 즉, 알파 = 1.0에서 알파 = 0.0까지 선형 그래디언트로 그려집니다.

내 생각 엔 NSCompositingOperation을 사용하는 draw() 변형 중 하나는 내가 원하는 것을 수행하는 데 도움이 될 수 있지만 어떻게 처리 할 수 ​​있는지 이해하는 데 어려움이 있습니다. 저는 그래픽 전문가가 아니며, NSImage와 NSCompositingOperation 문서는 다른 용어를 사용하는 것 같습니다.

퀵 버전 : 꽤 많이 this question이지만 Android 대신 macOS를 사용합니다.

답변

2

올바른 길을 가고 있습니다. 이를 위해서는 NSCompositingOperationDestinationOut을 사용하는 것이 좋습니다. 그러면 그려지는 소스의 알파를 기반으로 대상을 효과적으로 펀치 할 것입니다. 따라서 이미지를 먼저 그린 다음 .destinationOut 연산을 사용하여 알파 0.0에서 1.0까지 그라데이션을 그릴 경우 알파 1.0 ~ 0.

의 이미지로 끝납니다. 그라데이션이 그려지는 배킹 스토어에서 이미 어디에서/어떻게 사용하는지 조심해야합니다.

  • 모든 뷰의 도면 내에서이 작업을 수행하려면, 당신은 이미지의 도면과 무엇을 펀칭 방지하기 위해 CGContextBeginTransparencyLayerCGContextEndTransparencyLayer를 사용하여 transparency layer 내 펀치 아웃 그라데이션을 수행해야합니다. drawingHandler constructor 또는 NSCustomImageRep를 사용하고있다 내의 동일한 화상 & 구배 도면 중 하
  • 는 또한 제 (투명 필름 층에 대한 걱정없이),이 변형 버렸다 나타내는 새로운 NSImage을 만들 수있다. 그런 다음 해당 이미지를 사용자의보기에 그려 보거나 단순히 해당 이미지를 NSImageView로 사용하십시오.