HOME > VMLエディター・掲示板 (古いβバージョン) サンプル・その他 > VMLサンプル2
一括表示
※このサンプルは「VMLペイント&アニメ 掲示板 v0.80」(β版、現在停止)に登録したVMLサンプルをHTML化したものです。

[60]  タイトル: VMLサンプル path エレメント  投稿日: 2005/06/23(Thu) 19:30  投稿者: 7k8o  
VMLサンプル path エレメント

v アトリビュート文字列(または shape の path プロパティ)のコマンドについて
サンプルを作ってみます。
(私が探した中ではここで取り上げるようなサンプルは見つかりませんでした。)
コメントには下記のリンクからの引用を含んでいます。

----------------------------------------------------
参考:
Microsoft MSDN Library http://msdn.microsoft.com/library/default.asp?url=/workshop/author/vml/shape/data/vmlom.asp
ベクトルマークアップ言語(VML) W3Cノート http://www.w3.org/TR/NOTE-VML
ベクトルマークアップ言語(VML) W3Cノート (翻訳どら猫本舗) http://www.doraneko.org/misc/vml/19980513/Overview.html#_Toc416858391

[61]  タイトル: コマンド 'm', 'l', 'e'  投稿日: 2005/06/23(Thu) 19:44  投稿者: 7k8o  
VMLサンプル path エレメント >コマンド'm','l','e'

'm' 与えられた (x,y) 座標で新しいサブパスを開始する。
'l'(エル) 与えられた (x,y) 座標へ現在点から線を描画し、この点を新しい現在点にする。
'e' 現在のサブパスのセットを終了する。
青のラインは一見すると二つの図形に見えますが、一つの図形です。

[62]  タイトル: コマンド 'x'  投稿日: 2005/06/23(Thu) 19:50  投稿者: 7k8o  
VMLサンプル path エレメント >コマンド 'x'

'x' 元の moveto 点へ現在点から直線を描画して、現在のサブパスを閉じる。

[63]  タイトル: コマンド 't'  投稿日: 2005/06/23(Thu) 19:57  投稿者: 7k8o  
VMLサンプル path エレメント >コマンド 't'

't' 座標 (cpx+x, cpy+y) で新しいサブパスを開始する。
(cpx+x, cpy+y)は相対座標で、
図の(4)"0,20"は(3)からの相対座標です

[64]  タイトル: コマンド 'r'  投稿日: 2005/06/23(Thu) 20:00  投稿者: 7k8o  
VMLサンプル path エレメント >コマンド 'r'

'r' 与えられた相対座標 (cpx+x, cpy+y) へ現在点から線を描画する。
(cpx+x, cpy+y)は相対座標で、
図の(2)"100,70"から(4)までは相対座標です

[65]  タイトル: コマンド 'v'  投稿日: 2005/06/23(Thu) 20:11  投稿者: 7k8o  
VMLサンプル path エレメント >コマンド 'v'

'v' 与えられた現在点との相対座標を使った3次ベジェ曲線。
図の(2)"100,70"から(4)"50,-20"までは(1)からの相対座標です

[66]  タイトル: コマンド 'nf'  投稿日: 2005/06/23(Thu) 20:16  投稿者: 7k8o  
VMLサンプル path エレメント >コマンド 'nf'

'nf' 現在のセットの(end - e によって区切られた)サブパスは塗りつぶされない。
図の(1)〜(3)は塗潰されるが、(4)〜(6)は塗潰されない。

[67]  タイトル: コマンド 'ns'  投稿日: 2005/06/23(Thu) 20:20  投稿者: 7k8o  
VMLサンプル path エレメント >コマンド 'ns'

'ns' 現在のセットの(end - e によって区切られた)サブパスは塗りつぶされない。
図の(1)〜(3)は塗潰されないが、(4)〜(6)は塗潰される。

[68]  タイトル: コマンド 'c'  投稿日: 2005/06/23(Thu) 20:27  投稿者: 7k8o  
VMLサンプル path エレメント >コマンド 'c'

'c' 最後2つのパラメータによって与えられた座標へ現在点からベジェ曲線を描画する。
制御点は最初4つのパラメータによって与えられる。

[69]  タイトル: コマンド 'at'  投稿日: 2005/06/23(Thu) 20:30  投稿者: 7k8o  
VMLサンプル path エレメント >コマンド 'at'

'at' left, top, right, bottom, 開始点 (x,y), 終了点 (x,y)。
最初4つの値は楕円の境界ボックスを定義する。
最後4つは2本の半径ベクトルを定義する。

[70]  タイトル: コマンド 'ar'  投稿日: 2005/06/23(Thu) 20:33  投稿者: 7k8o  
VMLサンプル path エレメント >コマンド 'ar'

'ar' left, top, right, bottom, 開始点 (x,y), 終了点 (x,y)。
'at'(arcto) と同じであるが、弧の開始点への黙示的な moveto により新しいサブパスが開始される。

[71]  タイトル: コマンド 'wa'  投稿日: 2005/06/23(Thu) 20:35  投稿者: 7k8o  
VMLサンプル path エレメント >コマンド 'wa'

'wa' left, top, right, bottom, 開始点 (x,y), 終了点 (x,y)。
'at'(arcto) と同じであるが、弧が時計回り方向に描画される。

[72]  タイトル: コマンド 'wr'  投稿日: 2005/06/23(Thu) 20:38  投稿者: 7k8o  
VMLサンプル path エレメント >コマンド 'wr'

'wr' left, top, right, bottom, 開始点 (x,y), 終了点 (x,y)。
'ar'(arc) と同じであるが、弧が時計回り方向に描画される。

[73]  タイトル: コマンド 'qx'  投稿日: 2005/06/23(Thu) 20:40  投稿者: 7k8o  
VMLサンプル path エレメント >コマンド 'qx'

'qx' 終了点 (x,y)。
与えられた終了点へ現在点から四つ割り楕円が描画される。
楕円セグメントは、初期的にはx軸に平行な直線に沿っている(すなわち、セグメントは水平方向に向かって開始する)。

[74]  タイトル: コマンド 'qy'  投稿日: 2005/06/23(Thu) 20:42  投稿者: 7k8o  
VMLサンプル path エレメント >コマンド 'qy'

'qy' 終了点 (x,y)。
楕円セグメントが初期的にはy軸に平行な直線に沿っている(すなわち、セグメントは垂直方向に向かって開始する)ことを除き、'qx'(ellipticalquadrantx) と同じである。

[77]  タイトル: コマンド 'ae'  投稿日: 2006/04/05(Wed) 20:41  投稿者: 7k8o  
VMLサンプル path エレメント >コマンド 'ae' (angleellipseto)

中心 (x,y), サイズ (w,h), 開始角、終了角。
これらのパラメータを使って記述する楕円のセグメントを描画する。セグメントの開始点へ現在点から直線が描画される。 
---------------------------------------------------------------------
図(1)のpath部分は下のようになります。
path="m200,200 ae 200,200 100,100 -3932160,9830400 x e"
         [0]   ^^   [1]     [2]      (a)     (b)

[1]中心 (x,y)
[2]サイズ (w,h)
(a)開始角
(b)終了角

開始角と終了角は以下のようにして求めます。
                                         (a)            (b)
       開始角         終了角          開始角*2^16    終了角*2^16
(1)  -60(∠XOB)     150(∠AOB)  ⇒ (   -3932160   ,   9830400    )
(2) -180(∠XOC)     120(∠BOC)  ⇒ (  -11796480   ,   7864320    )
(3) -270(∠XOA)      90(∠COA)  ⇒ (  -17694720   ,   5898240    )

※ 2^16 は2の16乗で65536ですから、 例えば(1)の開始角は -60*65536= -3932160 となります。

※ 開始角は例えば(1)の場合、∠AOXではなく∠XOBですので注意が必要です