LoginSignup
0
0

More than 5 years have passed since last update.

javaFXのCanvasで破線を引く時の注意点

Posted at

破線の引き方

javaFXのCanvas上で破線を引きたいときは、Canvasから取ってきたGraphicsContextクラスのsetLineDashesメソッドで
破線の線を引く部分と引かない部分の長さを交互に与えればいい。
例えば1,3,2,1と設定した場合
(ーが引かれている場所、␣が引かれてない場所)
ー␣␣␣ーー␣ー␣␣␣ーー␣......
となる。
奇数を設定した場合その数列同士を2こつなぎ合わせたものを設定した扱いになる。
1,3,2と設定した場合
ー␣␣␣ーー␣ーーー␣␣ー␣␣␣ーー␣ーーー␣␣......
となる。

setLineDashOffsetを設定すると線の開始地点がその分だけずれる。
たとえば破線を4,2と設定した状態通常は
ーーーー␣␣ーーーー␣␣......
だが、オフセットを2にすると
ーー␣␣ーーーー␣␣ーーーー␣␣......
となる。
マイナスにすると逆側にずれる。

注意点

ここからが注意点だが、線の太さ(LineWidh)より小さい破線の空白部分は潰れて消えてしまう。
なぜかというと、線を描画するときにデフォルトでは
(■が太さ1で描かれた線、ロが太さ5で描かれた線)

ロロロロロロロロロロ
ロロロロロロロロロロ
ロロ■■■■■■■ロロ
ロロロロロロロロロロ
ロロロロロロロロロロ

のように太さの半分だけ線が延長される。これが破線の端でも起こるので、太さ5だと長さ5以下の空白部分は線に潰されて消えてしまう。

これを解決するには、setLineCapBUTTを指定すればいい。
これを設定すると線を描画するときに
ロロロロロロ
ロロロロロロ
■■■■■■■
ロロロロロロ
ロロロロロロ
のように延長されずに描画されるので空白が潰されなくなる。
setLineCapで指定できる属性とその内容はStrokeLineCapのjavadocの図がとてもわかりやすい。

以上。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0