トップページ > 過去ログ > 記事閲覧
文字を消す方法
名前:三郎 日時: 2010/06/10 07:32

現在DXライブラリの関数を一つずつ試していますが、画面上の特定の文字(文字列)を消す方法が分りません。 例題にでている関数です DrawString( 200 , 240 - 32 , "キーを押してください" , Cr ); これにより表示されている文字を消すのはどうすればよいのでしょうか? 例えば DrawString( 200 , 240 - 32 , "          " , Cr ); のようにヌル文字を入れても消す事は出来ません。

Page: 1 |

Re: 文字を消す方法 ( No.1 )
名前:Will 日時:2010/06/10 09:50

DrawBoxやDrawGraph等で塗りつぶすのが基本です。
Re: 文字を消す方法 ( No.2 )
名前:三郎 日時:2010/06/10 11:57

Willさん、この方法だと初めにその場所に絵(グラフィック)が書いたあったら、その部分が消えてしまいます。文字の場合幅の情報など対角線情報がなく不自由に感じます。 グラフィックとテキストが同じ画面だから残念ながら方法がないのでしょうか。 絵をもう一度書き直して新たな文字を書かざるを得ないということですね。
Re: 文字を消す方法 ( No.3 )
名前:三郎 日時:2010/06/10 16:08

試行錯誤の結果例えば背景色が黒で文字が白色の場合背景色で、同じ文字を書くことにより消えましたが、背景色が絵の場合どうしょうもありません。 これを解決する方法があれば素晴らしい。
Re: 文字を消す方法 ( No.4 )
名前:T 日時:2010/06/10 18:46

Willさんも仰っているとおり消したい部分のみ塗りつぶすのが基本だと思います 画像の一部分だけ、または画面の特定の範囲内のみを描写する関数がありますのでそちらを試してみてはいかがでしょうか 参考として、DrawRectGraph や SetDrawArea などがリファレンスに載っています また、ご自身も仰るとおり、背景を描写しなおし、その上に修正した文字列を描写するというのもよく使われる手法だと思います
Re: 文字を消す方法 ( No.5 )
名前:三郎 日時:2010/06/10 20:26

WillさんTさん、参考になりました。私は関数一つずつ試していましたので其処まで行っていませんでした。 文字を描いた領域のグラフィック上の座標が分らないので困りました。 私はDXライブラリーでゲームを造るためではなく他の目的に利用できないか考えていました。 ゲームではないのでそれほど高速性は必要ないので、もう少し考えて見ます。 例えばCADな場合、レイヤーといって多くの画面を重ね合わせています。 そのような概念がないのかなあと思いました。
Re: 文字を消す方法 ( No.6 )
名前:いっち 日時:2010/06/10 20:57

> 例えばCADな場合、レイヤーといって多くの画面を重ね合わせています。 > そのような概念がないのかなあと思いました。 DxLib自体にレイヤーの機能はありませんが、プログラマが自分で実装することは可能です。 (スイッチで処理を飛ばしたり、オフスクリーンレンダリング行う等) また、DxLibを使用する場合は(作成するプログラムにもよりますが)、 毎フレームごとに ClearDrawScreen を行い、1から描画しなおすというのが一般的です。 ですので、前フレームの描画結果が残っていて、それを加工するという考え方から離れたほうが、 DxLibは使いやすいと思います。
Re: 文字を消す方法 ( No.7 )
名前:三郎 日時:2010/06/12 11:59

いっちさん、そうですか色々これから試してみます。 しかし、DXライブラリーを見てみますと、例えば画像など読み込むLoadGraphScreenなどありますが、画像とか文字とかデータを逆に書き込む関数が見当たりません。メモリー及びデイスクに途中で書き込めたら、いろいろ応用できると思いますが、、、 現在パソコン画面に出ているDXの画面がその時点で一旦セーブできればとも考えています。 私はVC++を購入して日も経たずWinでのプログラムの経験がなく中々学習が進みません。
Re: 文字を消す方法 ( No.8 )
名前:いっち 日時:2010/06/12 16:11

以下の関数は非公開ですが、描画対象をディスク上に保存します。 int SaveDrawScreenToBMP( int x1, int y1, int x2, int y2, const char *FileName ) ; // 現在描画対象になっている画面をBMP形式で保存する int SaveDrawScreenToJPEG( int x1, int y1, int x2, int y2, const char *FileName, int Quality = 80 , int Sample2x1 = TRUE ) ; // 現在描画対象になっている画面をJPEG形式で保存する Quality = 画質、値が大きいほど低圧縮高画質,0〜100 int SaveDrawScreenToPNG( int x1, int y1, int x2, int y2, const char *FileName, int CompressionLevel = -1 ) ; // 現在描画対象になっている画面をPNG形式で保存する CompressionLevel = 圧縮率、値が大きいほど高圧縮率高負荷、0は無圧縮,0〜9 画像をメモリ上で直接編集する場合はソフトイメージを使います。 詳しくはリファレンスをご覧下さい。
Re: 文字を消す方法 ( No.9 )
名前:三郎(解決) 日時:2010/06/12 19:23

いっちさん、皆さんは凄いスキルですね、とても足元にも及びません。 これから何とか時間を作りヨチヨチで進んでみます。 末永く宜しくお願いします。
Re: 文字を消す方法 ( No.10 )
名前:大久保麻衣 日時:2014/03/05 02:14

画面上にあの文字がでてきえないんですけどぉきえないんですけどぉ。

Page: 1 |