ベジェ曲線に沿ったグラデーション

MacDev

ベジェ曲線について調べているときに偶然見つけた記事。

グラデーションをベジェ曲線に沿って曲げながら描画するにはどうすればいいのかという話だ。図がたくさんあってとてもわかりやすい。

Before
After

方法は思ったよりシンプルで、要点を抜き出すと、

  1. ベジェ曲線を直線の集合に分解
  1. それぞれの直線に沿うように長方形を並べる
  2. それぞれの長方形にグラデーションを描画

...というだけの話である。(上の図は前述の記事から引用)

これを Cocoa でもできないものか。いや、特に使う予定はないのだけど、楽しそうなので...!

→ 続きを読む

その数字、ガタガタしてない? - AppKit で数字を等幅にする

MacDev

OS X 10.9-10.11 で連続してシステムフォントが変更された。

  • 10.9 で .Lucida Grande UI(ほとんど変化なし)
  • 10.10 で Helvetica Neue
  • 10.11 で San Francisco

このうち 10.11 で採用された San Francisco が現在も使われている。使い方に合わせてあらゆる部分がダイナミックに変化することによって使用シーンの幅を拡大し、今では Apple 製品全体でおなじみ(スクリーン上のみならず製品のロゴやキーボードの刻印にも使われるようになった)の存在である。

どこで使っても読みやすくスタイリッシュで万能感のあるこのフォントだけど、UI で使うときに一つ気をつけておきたいことがある。数字部分がプロポーショナルになったことだ。

数字は変化する頻度が高いのでこのまま使うと値が増減するたびに幅が変化して表示が左右にずれてしまうことになる。これに対処するためには

→ 続きを読む

2 つの Swift ライブラリを公開 - ZMAX、ZMIOUSB

MacDev

先日初参加した try! Swift で、ある人に「オープンソースやらないんですか?」「Mac 関係のコード見たい!」と言ってもらえた。これはいい機会。ちょうど誰かの役に立つかもしれないコードがいくつかあったので、熱のあるうちにライブラリとして GitHub で公開することに。ちょっと豪華な二本立て!

古くからある、特に macOS 限定の API に関してはまだ C 関数が多くて Swift からは触りづらかったりする。Swift 3 で Core Graphics 関係のオブジェクトが Swift っぽく触れるように改善されたのをヒントに、これらを触りやすくしてみようという試みである。

CGContextMoveToPoint(context, p1)
CGContextAddLineToPoint(context, p2)
CGContextStrokePath(context)
Swift 2
context.move(to: p1)
context.addLine(to: p2)
context.stroke()
Swift 3

→ 続きを読む

© 2005-2019 zumuya