DOBON.NET DOBON.NETプログラミング掲示板過去ログ

テキストボックス内の改行位置について-続き

環境/言語:[VB.Net]
分類:[.NET]

■No6462に返信(平ちゃんさんの記事)

antさん 皆さん いつもお世話になります。

ーーーーーーーーーーーーーーー
これは「テキストボックス内の改行位置について」の続きです。
内容のわからない方は「テキストボックス内の改行位置について」を
ご覧下さい。
ーーーーーーーーーーーーーーー

テストした結果を連絡させていただきます。
(目視文字作成方法)
リッチテキストの文字のうち表示されている部分の改行、スペースを
検索し目視文字をリッチテキスト上にグラフィック表示する。
<結果>
表示されている部分を取得するのでテキストの大きさに無関係なのでサクサク動作を
期待しましたが、テキストが多くなると動作が遅くなりました。
これは pt = Me.Rtedit.GetPositionFromCharIndex(i) このメソッドが
テキストの大きさにより遅くなるためと推測しました。
例えば1Kのテキストでは約50ms位で目視文字表示完了していますが
100Kで2000msぐらいになります。
<今後の課題>
1.上記の問題の解消
2.チラツキに関してはリッチテキストにグラフィック表示していますので、
  システムが再表示必要と判断して目視文字を消すので、再表示させるために
  間隔が長くなり、チラツキの現象となる。
  これはリッチテキスト上に透明のキャンバスとして作用するコントロール、
  フォームなどを置きこれに描写すればよい。
3.操作に対する応答性が悪い。これは1.の問題に起因しています。

#以上の内容で一応テストは終了とします。
#深山さんの仰るとおり、大変ですね。
#サンプルを添付しますので興味のある方はどうぞ。実用ではありませんが。
#有難うございました。今後もご指導のほどお願いします。

#解決済みとします。
(この記事にはファイル"1096786864.txt"が添付されていましたが、削除されました。)
■No6469に返信(平ちゃんさんの記事)
> ■No6462に返信(平ちゃんさんの記事)
>

訂正です。



> これは pt = Me.Rtedit.GetPositionFromCharIndex(i) このメソッドが

Me.Rtedit.GetPositionFromCharIndex(i) 特にこれでも無いようです。
デマでした。
解決済み!
この掲示板は過去ログに入るとアップロードされたファイルが削除されてしまうので、この貴重なサンプルも将来削除されてしまうという惨劇が起こりえます。ですので、勝手ながら以下のURLにこのファイルをコピーさせていただきました。

http://dobon.net/vb/bbs/files/1096786864.txt
■No6469に返信(平ちゃんさんの記事)

平ちゃんです。いつもお世話になっています。

またまた訂正です。

>表示されている部分を取得するのでテキストの大きさに無関係なのでサクサク動作を
>期待しましたが、テキストが多くなると動作が遅くなりました。
>これは pt = Me.Rtedit.GetPositionFromCharIndex(i) このメソッドが
>テキストの大きさにより遅くなるためと推測しました。

この件に関してはよくよく調べた結果次のように訂正します。
1.確かにリッチテキストボックス上に表示されている部分を対象にした、動作をしています。従ってテキスト全体の大きさには関係ありません。
  当初のテストイメージに合っています。
2.なぜ動作が遅いのか。これは対象の文字から改行、空白を検索していますので対象文字数が多くなると当然時間がかかります。
  折り返し表示で表示させている場合は対象文字は画面表示と同じですが
  折り返し無し表示の場合は画面に隠れている文字も対象になります。
  極端な話、1Kもあるような行を10行表示させますと10Kを検索すること
  になる訳です。
<今後の課題>
以上の点を踏まえ対象文字数を画面に表示している文字のみに限定するようソフトを修正する必要があります。

#ご迷惑をおかけしましてすみません。

DOBON.NET | プログラミング道 | プログラミング掲示板