VB6でImageは、回転させる事は可能ですか

タグの編集
投稿者 じょにー  (社会人) 投稿日時 2009/12/1 04:44:14
VB6で、Imageで配置した、Pictureは回転させる事は可能ですか?FORMにひとつImageを配置させた状態でTimerイベントで少しづつ、回転させようと思っていましたが、やり方が解らなかったので、1度づつ回転させた絵を360枚用意して、イベント毎に、順番に読み込んで表示させていましたが、どうも動きが、鈍いので、配置したmageのコントロールを回転させるのに、良い方法はありませんか?諸先輩方々のお知恵を、拝借させて下さい。よろしく、お願いします
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2009/12/1 18:55:17
PaintPicutre を使えば、左右反転・上下反転・上下左右反転が可能です。
その意味では、180度回転させることができるわけですが、標準機能でできるのはそこまでですね。

より細かい回転制御が必要な場合には、難易度が大幅に上がりますが、
下記のような方法を利用できます。

(案1) GDI+ の Flat API を使って回転させる。(GdipRotateWorldTransform 関数など)
(案2) DirectX Graphics / Direct3D を使って Z 軸を中心に回転させる。(D3DXMatrixRotationZ など)
(案3) 三角関数を用いて回転前後の座標を求め、Point メソッドと PSet メソッドを利用して、
 1 ドットずつ描画していく。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2009/12/1 19:02:10
> 1度づつ回転させた絵を360枚用意して、イベント毎に、順番に読み込んで表示させていましたが
それらを繋げて、1 枚の大きな画像として保持しておき、それを
PicClip(ピクチャ クリップ)コントロールで切り出して使うこともできます。

PicClip を使ったアニメーションの実装例ととしては、VB6 付属のサンプルである
\SAMPLES\VB98\Picclip\RedTop.vbp などが参考になるかと思います。
投稿者 じょにー  (社会人) 投稿日時 2009/12/1 22:47:13
魔界の仮面弁士師匠、いつも丁寧なご解説、ありがとうございます。今回の件は、僕には、敷居が高すぎるので、あきらめました。絵の枚数を、1度づつ、360枚から、5度づつ72枚に、変更したりして一番動きが、スムーズそうな所探して、がんばってみます。