2016-12-06 4 views
0

CGContext에 그라디언트를 그리는 데 두 가지 방법을 사용할 수 있다고 말할 수있는 한 drawLinearGradientdrawRadialGradient입니다. 내가 찾고있는 것은 xy 반경을 정의 할 수있는 타원형 그라디언트를 정의하는 방법입니다.CGContext의 타원 방사형 그래디언트?

이 기능이 다른 환경 (SVG)에있는 예입니다.

<RadialGradient id="gradient" cx="50" cy="50" rx="20" ry="40" fx="150" fy="75"> 

기존의 drawRadialGradient에 대한 선언은 다음과 같습니다.

func drawRadialGradient(_ gradient: CGGradient, 
      startCenter: CGPoint, 
      startRadius: CGFloat, 
       endCenter: CGPoint, 
       endRadius: CGFloat, 
       options: CGGradientDrawingOptions) 

시작 및 끝 반경 모두 스칼라 값이므로 모두 원할 수 있습니다. CGContext에서 어떻게 타원형 그래디언트를 그릴 수 있습니까?

답변

0

제가 생각할 수있는 유일한 점은 그라디언트를 그리기 전에 컨텍스트에 동일하지 않은 x 및 y 축척 비율로 축소/축소 변환을 적용하는 것입니다. 그것은 둥근에서 그것을 기지개하고, 그것을 타원형이어야한다.

+0

변형에 대한 확장은 아티팩트를 추가하기 때문에 선택 사항이 아닙니다. –

+0

크기를 늘린 다음 크기를 줄이는 방법은 어떻습니까? –

0

"왕도"가 없습니다. 이 기능은 내장되어 있지 않으므로 모든 픽셀을 직접 그려야합니다.