お世話になっています。
キャラチップ画像を分割して読み込みたいです。
検索しても特にヒットさせられなかったので質問させていただきました。
LoadDivGraphを使うには引数に(
追記:分割後の1枚当たりの)画像のサイズが必要なので、
キャラチップの大きさが分からない時は、
単純にLoadDivGraphを使うわけにはいかないようです。
なるべく無駄を減らして画像の大きさを取得することはできないでしょうか。
あらかじめ分かっているのは、画像の横と縦の分割数です(6,4)。
DxLibリファレンスページ(下記)を見て、2つの方法を考えました。
http://homepage2.nifty.com/natupaji/DxLib/dxfunc.html
いずれもLoadDivGraphで大きな無駄が出ているのかなと思います。(処理負荷の面で)。
1.LoadDivGraphを使い捨てる
LoadGraph → GetGraphSize →DeleteGraph → LoadDivGraph
► スポイラーを表示
コード:
//画像のサイズを取得する
char fileName = "Picture/charachip_a.png";
int width = 0; int height = 0;
int handTemp = LoadGraph(fileName,FALSE);
GetGraphSize(handTemp,&width,&height);
DeleteGraph(handTemp,0);//使い捨て
//頑張ってLoadDivGraphを使う
int *graphDiv = new int[6*4];
LoadDivGraph(fileName,6*4,6,4,width,height,graphDiv,TRUE);
2.LoadGraph → GetGraphSize → DerivationGraph → DeleteGraph
► スポイラーを表示
コード:
//まず画像を読み込む
char fileName = "Picture/charachip_a.png";
int width = 0; int height = 0;
int chipHandle = LoadGraph(fileName,FALSE);
GetGraphSize(handTemp,&width,&height);
//読み込んだ画像からDrivationGraphで新しい画像を作ることで分割する(省略)
DeleteGraph(chipHandle,0);//LoadDivGraphで読み込んだ画像を使い捨て
最後に、2番目の方法は、1番目の方法よりも無駄が少ないでしょうか。