度々失礼します。
トピックを細かく小分けしています
前回
前々回
の続きなので・・・
今回やりたいのは自動改行、また、改行させる方法です。
前回は文字描画まではいきました。
そして次に、200x200の画像の上から文字を描画しました。
例えば、(100 , 100)の位置に200x200の適当な画像を貼ります。
そして、その画像の上である(110 , 120)の位置から読み込んだ文字を描画しました。
普通に描画はできましたが、文字数が多く画像からはみでてしまいました。
読み込むテキストファイル(その1)
案の定画像外の黒い所まで描画されてしまいます。(背景は真っ黒です)
当たり前だとは思うのですが、これを改行させるやり方とかあるのでしょうか?
所定のx座標までいったら改行
例、x座標が280より大きくなったら110に戻してy座標に50を足す・・・的な・・・
もしくは(その2)
と、テキストファイルで改行してしまって無理やり幅を狭くするしかないのでしょうか?
(その2)の描画の仕方の方が綺麗だとは思いますが、今回は改行できればさせたいだけですので、2行になろうと3行になろうと構いません。
要は、(その2)のテキストファイルでは「ここは」の後に無駄なスペースができてしまいます。これを阻止したいのです。
テキストファイルを(その3)
というようにやってしまうとすごく変な感じになります。
ご教授お願いします。
文字描画で改行・・・
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 文字描画で改行・・・
文字列を与えれば、幅を調べる事はできます。
あとはルールを作って、適当な幅になるように毎回文字列を組み立てて幅を知らべてやって、改行も自分で制御していやるだけです。
ただ、そのルールが明確じゃないと出来ないです。
※ 現状mi_lさんが書いているのは、明確なルールに見えません。
あとはルールを作って、適当な幅になるように毎回文字列を組み立てて幅を知らべてやって、改行も自分で制御していやるだけです。
ただ、そのルールが明確じゃないと出来ないです。
※ 現状mi_lさんが書いているのは、明確なルールに見えません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
mi_l
Re: 文字描画で改行・・・
返信ありがとうございます。
とりあえず助言された通りに考えながらやってみたいと思います。
どうすればよいかわからずに質問している私が明確なルールなんて決めているはずありません。
これから決めていきたいと思います。
詰んでしまったらもう一回質問したいと思います。
とりあえず助言された通りに考えながらやってみたいと思います。
あたりまえです。softya(ソフト屋) さんが書きました: ※ 現状mi_lさんが書いているのは、明確なルールに見えません。
どうすればよいかわからずに質問している私が明確なルールなんて決めているはずありません。
これから決めていきたいと思います。
詰んでしまったらもう一回質問したいと思います。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 文字描画で改行・・・
> どうすればよいかわからずに質問している私が明確なルールなんて決めているはずありません。
こちらからは、mi_lさんがどうしたいのか分からないと言うことです。
正解が有る問題でもないので、mi_lさんの理想がわからない以上は答えようがないと思ってください。
「なんとなく、うまく行きませんか?」ではルールを決めようがないのです。
何を条件に改行されて、何を条件に前の空白の幅を決めるのでしょう?
mi_lさんの理想を教えて下さい。
こちらからは、mi_lさんがどうしたいのか分からないと言うことです。
正解が有る問題でもないので、mi_lさんの理想がわからない以上は答えようがないと思ってください。
「なんとなく、うまく行きませんか?」ではルールを決めようがないのです。
何を条件に改行されて、何を条件に前の空白の幅を決めるのでしょう?
mi_lさんの理想を教えて下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
mi_l
Re: 文字描画で改行・・・
一応ここが改行のルール?なのですが・・・mi_l さんが書きました:当たり前だとは思うのですが、これを改行させるやり方とかあるのでしょうか?
所定のx座標までいったら改行
例、x座標が280より大きくなったら110に戻してy座標に50を足す・・・的な・・・
描画の際にはこのようなことは計算していないと思いますので・・・訊いたのです。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 文字描画で改行・・・
ざっとこんな感じですか。
(1)出力文字列バッファに元の文字列から次の一文字追加。
(2)出力文字列バッファのドット幅をGetDrawStringWidthで調べる。
(3)幅が(280-先頭x)をオーバーしていたら、この出力文字列バッファを(先頭x,表示y) で表示する。先頭x+=50、表示y+=16、出力文字列バッファを空に。
(4)元の文字列が無くなるまで(1)へ戻る。
(5)出力文字列バッファの入っていた内容を(先頭x,表示y) で表示する。
【補足】 ちなみに依頼されたとおりに書きましたが、毎行xを+50して良いのか判断に迷いました。
(1)出力文字列バッファに元の文字列から次の一文字追加。
(2)出力文字列バッファのドット幅をGetDrawStringWidthで調べる。
(3)幅が(280-先頭x)をオーバーしていたら、この出力文字列バッファを(先頭x,表示y) で表示する。先頭x+=50、表示y+=16、出力文字列バッファを空に。
(4)元の文字列が無くなるまで(1)へ戻る。
(5)出力文字列バッファの入っていた内容を(先頭x,表示y) で表示する。
【補足】 ちなみに依頼されたとおりに書きましたが、毎行xを+50して良いのか判断に迷いました。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 文字描画で改行・・・
私からは以上なのですが、これで実装してみてください。と言うより練習のために実装すべきだと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。