|
5章.BMP画像を拡大縮小させる
|
||||||
|
1999.6.27
|
||||||
4章で説明した画像の移動を理解できれば拡大縮小は簡単です。 まずは次のプログラムを実行してみてください。 BMPファイルが横方向にだんだん狭くなってゆくプログラムです。 CH=G@SETUP( 640 , 480 , 16 , 0 ) //画面初期化
G@CHRCLEAR(CH) //画面クリア
G@FLIP( ) //フリップ
G@CHRCLEAR(CH) //画面クリア
BM=G@CHRLOAD("TEST.BMP") //画像読み込み
LOOP
FOR DX = 0 TO 367
G@CHRRECT( CH , 0 , 0 , 367-DX , 191 ) //コピー先の矩形を指定
G@CHRCOPY( BM , CH ) //画像を画面にコピー
G@FLIP( ) //フリップ
NEXT
ENDLOOP
1〜5行目は、画面の初期化とBMPファイルの読み込みます。 6行目横方向に狭くして行きます。 処理は簡単で、7〜11行目のFOR−NEXTで、DX変数を0〜367の範囲でカウントを進め、BMPのコピー先の幅に同カウンタを割り当てています。 次にもう少高度なプログラムを作ってみます。X=184、Y=96の座標を画像の中心として画像を拡大率0%〜100%で拡大して行きます。 説明するよりも、実行してみて実際の動作を見て下さい。基本的な考え方は上と同じですので理解しやすいと思います。注意する所は、FOR−NEXTは拡大率0%〜100%でループしている事です。 CH=G@SETUP( 640 , 480 , 16 , 0 ) //画面初期化
G@CHRCLEAR(CH) //画面クリア
G@FLIP( ) //フリップ
G@CHRCLEAR(CH) //画面クリア
BM=G@CHRLOAD("TEST.BMP") //画像読み込み
LOOP
FOR DD = 0 TO 100
MX = (184*DD/100)
MY = ( 96*DD/100)
G@CHRRECT( CH , 184-MX , 96-MY , 184+MX , 96+MY ) //コピー先の矩形を指定
G@CHRCOPY( BM , CH ) //画像を画面にコピー
G@FLIP( ) //フリップ
NEXT
ENDLOOP
|