トップページ > 過去ログ > 記事閲覧
画像の加工
名前:taku 日時: 2009/10/11 16:06

GetDrawScreenGraph関数を使うと指定された画面を画像にすることが出来ますが、この画像をたとえば円形に加工するにはどうすればよいのでしょうか?

Page: 1 |

Re: 画像の加工 ( No.1 )
名前:sy(サイ) 日時:2009/10/13 08:53

画像の加工アルゴリズムなんかが必要なのでしょうか…? とりあえず、僕が思いついた限りをお教えします。 DXlibの機能で画像を1ドット単位でアクセスできる機能があります。 円形なので、適当な中心点を決めそこから円の当たり判定を応用して、 円の半径より長い距離のドットを黒かなんかに塗りつぶしていきます。 そうすれば、円の中にあったドットの色だけが保持されて、円形の画像になると思います。
Re: 画像の加工 ( No.2 )
名前:かたぱると 日時:2009/10/13 10:08

GetDrawScreenGraphで取得した画像を後から加工したい、というのであれば sy(サイ) さんが挙げられている処理でも実現できます。 しかし円形になったものが最終的にほしい画像であれば撮る段階ですでに円形になっていればよい訳で・・・。 ※「円形に加工」という処理を中心から円形部分以外は黒塗り、と捉えての記載になります。 以下の4つの手法のうちどれかで実現できるのではないかと。 ※細かいメソッド名までは記載しません。 @真ん中を透過色でまるくくりぬいた黒画像を画面に重ねてからGetDrawScreenGraphを行う  ⇒一番簡単な方法。しかし丸く加工した画面が一瞬プレイヤーに見えてしまう A黒く画面をクリアしてからマスク機能を使い、丸くくりぬいたマスク画面を設定して  その部分しか描画しないようにしてから描画し、GetDrawScreenGraphを行う  ⇒マスクを利用して@とほぼ同じことをする手法 B書き込めるサーフェスを用意し、書き込み先をそのサーフェスに指定。  スクリーンショットを取りたい画面を書き込んだ後に真ん中を透過色でくりぬいた黒画像を重ねて  作りたい画像を完成させ、ファイルへ出力する。その後に書き込み先をバックサーフェスへ戻す  ⇒@をバックグラウンドでやる手法。   スクリーンショット用の画像を裏で作るのでユーザーには見えない。 C書き込めるサーフェスを用意し、書き込み先をそのサーフェスに指定。  黒く画面をクリアしてからマスク機能を使い、丸くくりぬいたマスク画面を設定して  その部分しか描画しないようにしてから描画し、作りたい画像を完成させて  ファイルへ出力する。その後に書き込み先をバックサーフェスへ戻す  ⇒Aをバックグラウンドでやる手法。   スクリーンショット用の画像を裏で作るのでユーザーには見えない。 こんな感じですかね?
Re: 画像の加工 ( No.3 )
名前:taku 日時:2009/10/15 17:29

わかりました。 がんばってみたいと思います。ありがとうございました。

Page: 1 |