2016-12-06 130 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

沒有「皇家之路」。這個設施不是內置的,所以你必須自己繪製每個像素。 (可能有第三方庫會爲你做這件事。)