2013年3月19日火曜日

DXライブラリー日記 005 「綺麗な縮小」

セーブ画面のサムネイルが汚い。
DXライブラリは拡大は普通だけど、縮小は思った通りにならない。


DX_DRAWMODE_NEARESTネアレストネイバー法で描画0
DX_DRAWMODE_BILINEARバイリニア法で描画する1
DX_DRAWMODE_ANISOTROPIC異方性フィルタリング法で描画する2
DX_DRAWMODE_OTHERそれ以外


SetDrawMode()関数でこいつらを指定しても、縮小はガッタガタでがっくし。
2Dだけどビデオカードの3D機能で描画しているので、その辺の設定次第かと思い色々と弄ってみたものの変わらず。

完全に諦めてた私。



ところが、昨日この腐れプログラムをネットブックで動かしてみたら、ガウスフィルターが効かない場面が多々あると発覚し、その問題を解決しようとリファレンスを読んでいたところ、2,4,8分の1単位でなら綺麗に縮小できる事が発覚。

ってかチャンと読めという話。

縦600ドットの画像を縦800ドットに一回拡大して
GraphFilter( Handle, DX_GRAPH_FILTER_DOWN_SCALE, 8 ) ;
といたした所~~


DXライブラリで綺麗な縮小する画像



綺麗になった。



thum_tmp=MakeScreen(1200,1000,false);
SetDrawScreen(thum_tmp);
save_thum1=LoadGraph( "save01.bmp" );
DrawExtendGraphF( 0 , 0 , 1067 ,800 , save_thum1 , false ) ;
GraphFilter( thum_tmp, DX_GRAPH_FILTER_DOWN_SCALE, 8 ) ;


少し大きめにMakeScreenで最初にthum_tmpを作っても、GraphFilterを使うとthum_tmpのサイズも8分の1になってるのかなこれ?
まぁその都度DeleteGraphするからどうでもいいかな?






0 件のコメント: