2016-12-06 13 views
0

CGContextに2つの方法を使ってグラデーションを描くことができるとすれば、それは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

「王道」はありません。この機能は内蔵されていないので、すべてのピクセルを自分で描画する必要があります。

関連する問題