DXライブラリの機能として追加する予定はありませんが、
サンプルプログラムとして DrawRotaGraph2 の拡大・回転後の頂点座標を得るための関数を作ってみましたので、
よろしければサンプルプログラムにある関数 GetDrawRotaGraph2Position を使ってみてください
// 画像を DrawRotaGraph2 で回転させながら、その輪郭に GetDrawRotaGraph2Position で取得した
// 座標を使って線を描画するサンプルプログラム
#include "DxLib.h"
#include <math.h>
// グラフィックの回転描画の各頂点の座標を得る
void GetDrawRotaGraph2Position(
int x, int y, int cx, int cy, double ExtRate, double Angle, int GrHandle,
double *LeftTopX, double *LeftTopY,
double *RightTopX, double *RightTopY,
double *LeftBottomX, double *LeftBottomY,
double *RightBottomX, double *RightBottomY )
{
int w, h ;
double hw, hh ;
int tx, ty ;
int i ;
double Sin, Cos ;
double xb, Lx, Ly ;
double px[4], py[4] ;
double dcx, dcy ;
double bcx, bcy ;
Sin = sin( Angle ) ;
Cos = cos( Angle ) ;
GetGraphSize( GrHandle, &w,&h ) ;
hw = ( double )w / 2.0 ;
hh = ( double )h / 2.0 ;
bcx = ( -cx + hw ) * ExtRate ;
bcy = ( -cy + hh ) * ExtRate ;
dcx = bcx * Cos - bcy * Sin ;
dcy = bcx * Sin + bcy * Cos ;
Lx = x + dcx ;
Ly = y + dcy ;
px[ 0 ] = - hw ; py[ 0 ] = - hh ;
px[ 1 ] = w - hw ; py[ 1 ] = - hh ;
px[ 2 ] = - hw ; py[ 2 ] = h - hh ;
px[ 3 ] = w - hw ; py[ 3 ] = h - hh ;
for( i = 0 ; i < 4 ; i ++ )
{
xb = px[ i ] ;
px[ i ] = ( xb * Cos - py[ i ] * Sin ) * ExtRate + Lx ;
py[ i ] = ( xb * Sin + py[ i ] * Cos ) * ExtRate + Ly ;
}
if( LeftTopX ) *LeftTopX = px[ 0 ] ;
if( LeftTopY ) *LeftTopY = py[ 0 ] ;
if( RightTopX ) *RightTopX = px[ 1 ] ;
if( RightTopY ) *RightTopY = py[ 1 ] ;
if( LeftBottomX ) *LeftBottomX = px[ 2 ] ;
if( LeftBottomY ) *LeftBottomY = py[ 2 ] ;
if( RightBottomX ) *RightBottomX = px[ 3 ] ;
if( RightBottomY ) *RightBottomY = py[ 3 ] ;
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int handle ;
double angle ;
double ltx, lty, rtx, rty, lbx, lby, rbx, rby ;
// ウインドウモードで起動
ChangeWindowMode( TRUE );
// DXライブラリの初期化
if( DxLib_Init() < 0 ) return -1;
// 画像の読み込み
handle = LoadGraph( "Test1.bmp" );
// 描画先を裏画面にする
SetDrawScreen( DX_SCREEN_BACK );
// メインループ(何かキーが押されたらループを抜ける)
angle = 0.0 ;
while( ProcessMessage() == 0 )
{
// 回転値を更新
angle += 0.02f ;
// 画面のクリア
ClearDrawScreen();
// 回転座標を取得
GetDrawRotaGraph2Position( 320, 240, 40, 100, 1.5f, angle, handle, <x, <y, &rtx, &rty, &lbx, &lby, &rbx, &rby ) ;
// 画像の描画
DrawRotaGraph2( 320, 240, 40, 100, 1.5f, angle, handle, TRUE ) ;
// 画像の上に線を描画
DrawLine( ltx, lty, rtx, rty, GetColor( 255,0,0 ), 2 ) ;
DrawLine( rtx, rty, rbx, rby, GetColor( 0,255,0 ), 2 ) ;
DrawLine( rbx, rby, lbx, lby, GetColor( 0,0,255 ), 2 ) ;
DrawLine( lbx, lby, ltx, lty, GetColor( 255,255,0 ), 2 ) ;
// 裏画面の内容を表画面に反映
ScreenFlip();
}
// DXライブラリの後始末
DxLib_End();
// ソフトの終了
return 0;
}