トップページ > 記事閲覧
画像データの拡大縮小
名前:moti 日時: 2018/12/29 22:34

画像を拡大縮小する時に, DrawRotaGraph() や, DrawExtendGraph() がありますが,それはwhileの処理中の間に行われているのであって少し影響があると思ったので, 一番最初のロードの際に,一気に拡大縮小した情報をまた新たなハンドルとして登録したいのですが, 例: int handle = LoadGraph("Sample.png"); このhandle(10000*10000の画像であるとき,)を1000*1000の画像としてリサイズした状態でハンドルに登録したいです。 どのようにたら,うまくいくでしょうか。よろしくお願いしますm(_ _"m)
メンテ

Page: 1 |

Re: 画像データの拡大縮小 ( No.1 )
名前:へけぽん 日時:2018/12/30 07:17

自分用のMyLoadGraphという関数を以下のように作り、LoadGraphと置き換えれば上手くいくと思います int MyLoadGraph( char *FileName ){ int handle = LoadGraph( FileName );//画像をロード if(handle != -1){//画像のロードに成功した場合 int Sizex,Sizey;//画像サイズを格納するための変数を用意 GetGraphSize( handle ,&SizeX , &SizeY);//ロードした画像のサイズ取得 if((SizeX>=10000)&&(SizeY>=10000)){//画像サイズで条件分岐 int Nowscreen=GetDrawScreen;//現在の描画対象画面を一時保存 SizeX/=10;//1/10サイズにしたいので10で割る SizeY/=10; int minihandle = MakeScreen(SizeX,SizeY,TRUE);//1/10サイズのグラフィックハンドルを作成 if(minihandle==-1){//ハンドル作成に失敗した場合 DeleteGraph(handle);//メモリリークしないように、本来のサイズのグラフィックハンドルを削除※return handle;にすれば本来のサイズのまま返すこともできます return -1;//エラー発生を示す-1を返す } SetDrawScreen(minihandle);//描画対象画面を先ほど作った1/10サイズのグラフィックハンドルに変更 DrawExtendGraph(0,0,SizeX,SizeY,handle,TRUE);//ロードした画像を1/10サイズで描画 DeleteGraph(handle);//不要になった本来のサイズのグラフィックハンドルを削除 SetDrawScreen(Nowscreen);//現在の描画対象画面を元の画面に戻す   return minihandle;//縮めた画像のグラフィックハンドルを返す }else{ return handle;//指定サイズより大きくないのでそのままのグラフィックハンドルを返す } }else{//画像のロードに失敗した場合 return -1;//エラー発生を示す-1を返す } }
メンテ
Re: 画像データの拡大縮小 ( No.2 )
名前:moti(解決) 日時:2019/01/02 13:49

ありがとうございます! 活用させていただきます!(o*。_。)o
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存