- ベストアンサー
VBで扇形を回転させるには
- VB5を使用して、Formに2つのCommandButtonとicoファイルを貼り付けています。icoファイルは中心角約45度の扇形があります。この扇形を円状に回転させるにはどのようなスクリプトを組めばいいでしょうか。
- 回転させるにはSin関数とCos関数を使用します。
- CommandButton1をクリックした時に回転が始まり、CommandButton2をクリックすると回転が停止するようにしたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 Imageオブジェクトに貼り付けた「扇形」のicoファイルを、 回転する事ってできましたっけ。 (できるのでしたら、すいません。私の勘違いという事で流してください。) Imageオブジェクトごと回転するという手は不可能です。 (なぜならフォームに対しての4角の各点の座標の決め方が、 フォームの左上座標(0,0)から、オブジェクトの左上座標(Top,Left)を決め、 そのオブジェクトの左上座標から、右にいくつ(Width)、下にいくつ(Height) という設定なので、四角の角4点の座標を回転するように設定できない。) そうすると、Imageオブジェクト内の画像を回転させるって事になるんですが、 それも、私の記憶では出来ないと思います。 (それを実行するための手段がImageオブジェクトに用意されてない・・と思う) で、私なりの代替案として、 扇形が、線や、塗り潰しの表現でいいのであれば、 Formに直に、書きます。 (Circleメソッドを使用します。) ただ、このやり方で回転を表現する場合、 「フォームに書いて→消して→座標ずらして書いて→消して」 を繰り返す事になり、フォームがちらついて綺麗に見えないかもしれません。 もう一つ、方法として、一回転分の画像を作っておいて、 ImageListオブジェクトに全画像を登録。 Imageオブジェクトに表示する画像を順時変更し、 アニメーションGIFのようにコマ送りで、回転しているように見せるのも手です。 また、時間軸の処理を行うにはTimerコントロールを使うと便利です。 PS 三角形とかなら、Lineオブジェクト使って、楽に回転させれるんですけどね~。 (各頂点の座標が指定できるので。) 弧が出来ないんですよ・・弧が。
その他の回答 (1)
- taknt
- ベストアンサー率19% (1556/7783)
一般的には 三角関数を用いたりします。 数学は 得意でしょうか?
お礼
ありがとうございました。 >>SinとかCosを使用するのだとは思うのですが。 三角関数を用いることは予想していたので上記の表現を用いました。
お礼
ありがとうございました。 >Imageオブジェクトごと回転するという手は不可能です。 それを念頭に置いていのたのですが、ダメそうですね。 VBAならIncrementRotation等を用いれば可能なような気もするのですが、VBにはないんでしょうね。 代替案を提示して頂いたのですが、基本的にはImageオブジェクトを回転させなければ解決できない状況にありますもので。