#include"transform_ratio.h" #include"bmpio.h" static BmpIO g_bmpio; static int g_w=0,g_h=0,g_len=0; static HDC g_hdc=NULL; static BYTE *g_pixel=NULL; static BYTE *g_buf=NULL; // 原画像の保存バッファ #define POINTS 4 // 4 以外は無理 static Point g_ptIn[POINTS],g_ptOut[POINTS]; // 入力と出力の参照点 static int g_ci=0,g_co=0; // 設定した参照点の個数 static POINT g_lineIn[POINTS+1],g_lineOut[POINTS+1]; // ポリライン座標 // 比率による自由変形 void Transform(void) { // 出力から入力を求める SetSrcPoint(g_ptOut[0],g_ptOut[1],g_ptOut[2],g_ptOut[3]); // 出力を変形元に SetDstPoint(g_ptIn[0],g_ptIn[1],g_ptIn[2],g_ptIn[3]); // 入力を変形先に BYTE *temp=(BYTE*)malloc(g_len*g_h); memset(temp,0,g_len*g_h); Point P; int ix,iy; BYTE b=(BYTE)g_bmpio.GetBitCount()/8; for(int y=0;y=g_w || iy>=g_h) continue; memcpy(&temp[x*b+y*g_len],&g_pixel[ix*b+iy*g_len],b); } } memcpy(g_pixel,temp,g_len*g_h); free(temp); } // 参照点を全てクリア void DeletePoint(void) { for(int i=0;i