ホームへ戻る

 4.2章 画像を自由に変形する

 画像の拡大縮小や回転の方法は既にお伝えしましたが、自由変形と言って、

画像の端4点を指定すると、その通りに変形して描画してくれる機能がありますのでご紹介します。

機能は至って簡単です。

画像を自由変形して描画する関数は DrawModiGraph関数 です。DrawModiGraph関数 のリファレンスを確認してみましょう。

宣言 int DrawModiGraph( int x1, int y1, int x2, int y2,
          int x3, int y3, int x4, int y4,
          int GrHandle , int TransFlag );


概略 メモリに読みこんだグラフィックの自由変形描画

引数 x1 , y1 , x2 , y2
x3 , y3 , x4 , y4 : x1から順に描画する画像の左上、右上、
          右下、左下の頂点の座標
GrHandle     : 描画するグラフィックのハンドル
TransFlag     : 透過色が有効か、フラグ(TRUEで有効FALSEで無効)
戻り値  0:成功
  -1:エラー発生


引数は多いですが、最初の8個の引数は4点の座標、次に画像ハンドル、最後に透過度設定フラグを渡すようになっているだけです。

ではサンプルプログラムを確認してみましょう。



#include "DxLib.h"

int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
        ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK ); //ウィンドウモード変更,初期化,裏画面設定

        int Image;
        Image = LoadGraph( "画像/キャラクタ00.png" );//画像をロード

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

                DrawModiGraph( 
                        200,100,        //左上
                        500,50,         //右上
                        400,300,        //右下
                        150,350,        //左下
                        Image, TRUE );

        }

        DxLib_End();
        return 0;
}

実行結果


使い方としては簡単ですが、どんな時使うのでしょう?

この機能を使えば3D演算しなくとも3Dっぽく見せる事ができたり、視点を変えた美しい見た目などを工夫することが出来るかもしれません。

例えば以前Appleの某ソフト的に似せて以下のような物を作ったことがありますが、こんな演出も可能になります。



工夫次第で様々な演出が可能だと思うので、アイディアを搾って使ってみて下さい。

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


- Remical Soft -