dポイントプレゼントキャンペーン実施中!

VB5を使用してます。
FormにCommandButton2つとicoファイルをImageで貼り付けてあります。
icoファイルは枠の中に中心角約45度の扇形があります。
この扇形を円状に回転させるにはどのようなスクリプトを組めばいいのでしょうか。
CommandButton1をクリックした時に回転が始まり、CommandButton2をクリックすると回転が
停止するようにしたいのですが。

考えてみた手順としては、

FormのGeneralで
Dim StopFlag As Boolean

CommandButton2で
StopFlag = True

CommandButton1で
StopFlag = False
この後どうコーディングすればよいかわかりません。
SinとかCosを使用するのだとは思うのですが。

以下icoファイルのデータです。

icoファイルのWidthは6144
         Heightは5100
扇形部分のWidthは2600
        Hightは3800
icoファイルの左端から扇形の左端までは1800
        下端から扇形の下端までは730

参考までにicoファイルを図示してみましたが、相当いびつ(^^;
(中心点aが固定されて円状に回転するというイメージです)

以上、宜しくお願いいたします。

・・・・・・・・・・・・・・・・・・・・・・・・・
・                  ・
・      ・ ・ ・        ・ 
・     ・      ・     ・
・     ・     ・      ・
・     ・   ・        ・
・     ・ ・          ・
・    a・            ・
・                  ・
・・・・・・・・・・・・・・・・・・・・・・・・・

A 回答 (2件)

こんにちは。


Imageオブジェクトに貼り付けた「扇形」のicoファイルを、
回転する事ってできましたっけ。
(できるのでしたら、すいません。私の勘違いという事で流してください。)

Imageオブジェクトごと回転するという手は不可能です。
(なぜならフォームに対しての4角の各点の座標の決め方が、
フォームの左上座標(0,0)から、オブジェクトの左上座標(Top,Left)を決め、
そのオブジェクトの左上座標から、右にいくつ(Width)、下にいくつ(Height)
という設定なので、四角の角4点の座標を回転するように設定できない。)

そうすると、Imageオブジェクト内の画像を回転させるって事になるんですが、
それも、私の記憶では出来ないと思います。
(それを実行するための手段がImageオブジェクトに用意されてない・・と思う)

で、私なりの代替案として、
扇形が、線や、塗り潰しの表現でいいのであれば、
Formに直に、書きます。
(Circleメソッドを使用します。)
ただ、このやり方で回転を表現する場合、
「フォームに書いて→消して→座標ずらして書いて→消して」
を繰り返す事になり、フォームがちらついて綺麗に見えないかもしれません。

もう一つ、方法として、一回転分の画像を作っておいて、
ImageListオブジェクトに全画像を登録。
Imageオブジェクトに表示する画像を順時変更し、
アニメーションGIFのようにコマ送りで、回転しているように見せるのも手です。

また、時間軸の処理を行うにはTimerコントロールを使うと便利です。

PS
三角形とかなら、Lineオブジェクト使って、楽に回転させれるんですけどね~。
(各頂点の座標が指定できるので。)
弧が出来ないんですよ・・弧が。
    • good
    • 0
この回答へのお礼

ありがとうございました。

>Imageオブジェクトごと回転するという手は不可能です。

それを念頭に置いていのたのですが、ダメそうですね。
VBAならIncrementRotation等を用いれば可能なような気もするのですが、VBにはないんでしょうね。
代替案を提示して頂いたのですが、基本的にはImageオブジェクトを回転させなければ解決できない状況にありますもので。

お礼日時:2003/02/28 16:23

一般的には 三角関数を用いたりします。


数学は 得意でしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございました。

>>SinとかCosを使用するのだとは思うのですが。

三角関数を用いることは予想していたので上記の表現を用いました。

お礼日時:2003/02/28 16:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!