ビギグラマーのノート

自作PCやプログラミングについてのブログです。

【Swift3】<Error>: CGContextClosePath: no current point.

No Current Point

  SwiftでCoreGraphicsを触っている時にこのような実行時エラーに遭遇しました。

f:id:BegiGrammer:20170528203441p:plain

 一見問題なく描写が済んでいるものの「現在のポイントではない」という誠に不親切なことが書かれており、一瞬無視しそうになりましたが怒られるので治しときましょう。

目次作るほどでもないSolution 

 このエラーはいくつかの問題によって発生するそうですが、私の場合はfillPath()で塗りつぶすのをclosePath()の前に置いたことで発生しました。つまりその順序を逆にしたところ解決しました。

円を描写する時

 円を描写する時にも同様のエラーに遭遇する時があります。で、これがエラーの出ない円を描写する基本的な順番になります。

f:id:BegiGrammer:20170603132542p:plain

 fillEllipse(in:)だけでも円は描写できますが、contextの描写の中でaddEllipse(in:)で塗りつぶされていない円を描写する必要があります。そして線の描写と同じようにcloseしてから塗りつぶしの作業をします。