斜めの四角を描こう!

■はじめに

斜めの四角を描いてみよう。
正確か?といわれると、端がちょっと出てたり、まあ微妙だけど、その辺は大まかな感じで
多分動くんじゃないかなぁ、というスクリプトです。
座標の順番などで動かないこともあるような・・・という感じの実用度の低いスクリプトです。

あ、細長い矩形がかけないようです。うーむ。

斜めの四角描画実行結果
実行結果はこんな感じです。



■スクリプト本体



■スクリプト解説


斜めの四角形が描きたい、という掲示板の質問から、いろいろ考えて作ってみました。
gzoom命令を使うと、自由な大きさにグラフィックを変形できるので、それを使おうと思い、
斜めの四角形の要素をいろいろと研究しました。

矩形の仕切り方
赤い線で補助線を引きながら考えていると、どうやら斜めの四角形というのは
上の図のように5つの部分がら成り立っているような、気がしてきました。
真ん中の四角形はbxof命令で描画すれば簡単そうです。

あとの部分は同じような形で、上下が反転しているだけです。
gzoom命令では上下反転も出来るので、これを利用しない手はありません。
ななめのグラフィック naname.bmp
こんな形の部品を用意しました。


先のサンプルでは、 こんな構成になっています。
gzoom命令で、naname.bmpを縦横に伸ばして、対応する位置に置いています。

gzoom x2-x1,y2,2,100,0,-100,100

このように、コピーサイズにマイナスの値をしていすると図形を反転しながらコピーすることができます。
この場合は、X座標に-100を指定しているので、横方向の反転をします。
4つの3角形をコピーしたあと、最後にBoxf命令で塗りつぶせば終わりです。
今回はわざと色を変えてあります。

line命令の部分やwait命令は、動作の確認をするために入れているものなので、その辺は省いても動きます。

■おわり

多分、WindowsのAPIを使う方法など、もっとスマートな方法もあると思いますが、
gzoomの今回のような使い方もパズルのようで楽しいですよ。

スクリプトのダウンロード
kukei..zip

2004/10/23追記
現在、hspextのgsquare命令で簡単に描画できます。
角度を指定しての回転はgrectがよいでしょう。

実践編の目次に戻る