トップページ > 記事閲覧
別画像として保存する処理
名前:にゃーさん 日時: 2019/04/09 21:35

マップチップで背景画像を作成してそれを別の画像を作成し、 それをグラフィックハンドルに再度格納したいのです。 そこで裏画面に描画した内容をグラフィックハンドルに格納する方法、 もしくは別の裏画面を用意してそこに描画してそれを表画面に反映する方法、 もしくは別の裏画面に描画して、それをグラフィックハンドルに格納する方法 はありますでしょうか? 検索の仕方が悪いのか全然検索に引っかかりませんでした。。。 (そもそもこの方法は一般的ではない?) これをやりたい経緯としては背景の描画量がかなり多く毎回毎回マップチップを読み込んで 描画処理をさせるのはかなり無駄な気がして、一度画像にしてそこから切り出すようにすればかなり早いのでは? と考えた結果です。 どうかご教授お願いします。
メンテ

Page: 1 |

Re: 別画像として保存する処理 ( No.1 )
名前:管理人 日時:2019/04/10 00:55

MakeScreen という関数を使用すると『仮画面』を作成することができます int Screen = MakeScreen( 640, 480, TRUE ) ; // MakeScreen で作成 while( ProcessMessage() == 0 ) { SetDrawScreen( Screen ) ; // ←描画先にできます ClearDrawScreen() ; // Screen の内容をクリア DrawBox( 100, 100, 200, 200, GetColor( 255,255,255 ), TRUE ) ; // Screen に四角形を描画 SetDrawScreen( DX_SCREEN_BACK ) ; DrawGraph( 10, 10, Screen, TRUE ) ; // LoadGraph で作成したグラフィックハンドルと同じように描画することができます ScreenFlip() ; } DeleteGraph( Screen ) ; // 不要になったら削除 尚、仮画面を直接表画面に表示することはできませんので、最終的には SetDrawScreen( DX_SCREEN_BACK ) ; で描画先を裏画面にして、仮画面を裏画面に描画してから ScreenFlip(); で表画面に反映する、という形になります ただ、背景の広さによりますが、何画面分もの広さがある場合、それを全部画像として 持つと相当大きな容量になる可能性がありますので、個人的にはマップチップを毎回描画した ほうが良いのではないかと思います ( 32x32 のチップを 640x480 の画面に毎回 20x15個描画するというのはDXライブラリ公開当時の 2001年のPC( CPU は Celeron 300MHz ( 0.3GHz ) )でも余裕でしたし… ) 因みに、マップチップは1枚の画像にして、LoadDivGraph で読み込んで描画すると高速に 描画することができます( チップ1枚1枚をそれぞれ別の画像にして個別に LoadGraph で 読み込んでから描画する場合に比べて10倍近い速度差があります )
メンテ
Re: 別画像として保存する処理 ( No.2 )
名前:にゃーさん 日時:2019/04/11 00:10

ありがとうございます。 一度MakeScreenを試してからどちらがいいかは検討してみようと思います。
メンテ

Page: 1 |

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

   クッキー保存