ホームへ戻る

 2.2章 画像を回転・拡大縮小して表示する

 画像を普通にそのままのサイズで表示することは出来ました。今度は回転と拡大縮小の方法をみてみましょう。

画像を回転・拡大縮小表示する関数は DrawRotaGraph関数 です。DrawRotaGraph関数 のリファレンスを確認 してみましょう。

宣言 int DrawRotaGraph( int x, int y, double ExtRate, double Angle,
          int GrHandle , int TransFlag ) ;


概略 メモリに読みこんだグラフィックの回転描画

引数 x , y   : グラフィックを描画する領域の中心座標
ExtRate  : 拡大率(1.0で等倍)
Angle   : 描画角度(ラジアン指定)
GrHandle  : 描画するグラフィックの識別番号(グラフィックハンドル)
TransFlag : 透過色が有効か、フラグ(TRUEで有効FALSEで無効)


前章で紹介した、DrawGraph関数より、2つ引数が多いですね。

とは言え、真ん中に拡大率の指定、角度の指定、の引数が増えただけで後は変わりありません。

まず、第三引数は実数型で拡大率を指定します。

ここで、注意が必要なのが、DrawGraph関数は指定した位置が画像の左上になっていたことに対して・・・



DrawRotaGraph関数 は指定した位置が中央になります。



これは拡大率に2.0を指定した時の例です。指定した位置が中心点となり、中心点は変わらず大きさが2倍になります。

第四引数は角度を実数型で指定します。ここでもまた注意が必要です。

y軸は下が正でしたね。中学の時に習った座標系とは上下が逆になっているので、角度も反対回りになります。



これは、45゜回転した時の図です。0゜の方向であるx軸方向から時計回りに回転します。

また、角度は度数法で指定するのではなく孤度法で指定します。

中学の時、
孤度法と度数法の2種類があるのを習ったこと覚えていますか?

円1周を360゜とするのが度数法、円1周を
2πとするのが孤度法です。

よって180゜は円周率である3.141592654...となります。

プログラムではよく円周率を

#define PI 3.141592654

などと定義して使います。180゜が PI なのですから、45゜はいくつになりますか?

PI ÷ 4 ですね。

では、拡大も回転もしていない描画と、2倍に拡大し、45゜回転させた描画を2つ並べて描いてみましょう。


#include "DxLib.h"

#define PI 3.141592654

int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
        ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK ); //ウィンドウモード変更と初期化と裏画面設定
        int Handle;     // 画像格納用ハンドル
        Handle = LoadGraph( "画像/キャラクタ00.png" ); // 画像のロード

        // while(裏画面を表画面に反映, メッセージ処理, 画面クリア)
        while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 ){

                DrawRotaGraph( 100, 200, 1.0,  0.0, Handle, TRUE ); //画像の描画
		DrawRotaGraph( 400, 200, 2.0, PI/4, Handle, TRUE ); //画像の描画

	}

	DxLib_End(); // DXライブラリ終了処理
	return 0;
} 

実行結果



→分からないことがあれば掲示板で質問して下さい


- Remical Soft -