私はGoogleカレンダー、iCalendar、Outlookのカレンダーなどと同様のスケジュールアプリケーションを作成しています。イベントは長方形で表され、特に1週間全体を表示している場合は非常に小さくなります。ワードを切り捨てることができるようにしながら、長方形でワードラップする
私の挑戦は、矩形内のテキストを使用して、クリックする前にイベントの「意味のある要約」をユーザに与えることです。テキストは非常にコンパクトでなければなりません。そのためには、それほど一般的ではない方法で行を折り返したいと思っていますが、.NETがそれをネイティブに処理できると思われます。
単一の単語が長方形よりも広い場合は、その単語の先頭のみが表示されます。しかし、次の単語が部分的に矩形の外に落ちるならば、スペースが発生すると折り返しが発生するはずです。すべてのスペースが次の行に折り返されるわけではありません。なぜなら、2つ以上の単語がうまくいく行に収まる場合です。
答えはStringFormat、StringTrimming、およびFormatFlagsの機能にあると思われますが、目標を達成するための適切な組み合わせが見つかりませんでした。例えば
我々が持っている場合...
Chuck Norris
Dentist Appointment
により、それはなるかもしれない限られたスペースへ...
Chuc
Norr
Denti
Appo
私はそれになる必要はありません:
Chuc
k
Norr
is
Dent
ist
Appo
intme
nt
この例のように、チャックノリスが誰であるかを知っていれば、文字 "k"と "is"の存在は助けになりませんユーザーはその名前を認識します。実際に、これらの文字の存在は、垂直スペースも限られているため、「歯医者の予定」を見えなくする可能性があります。
私はすでに通常の方法でラップする矩形内にテキストを描画する方法を知っており、矩形の外にあるテキストを描画しないようにする方法も知っています。私が知っていないのは、スペース(またはキャリッジリターン)に遭遇したときに折り返す方法と、1つの単語が長方形よりも広い場合に中間単語を折り返さないようにする方法です。そこに助けがありますか?
私はまだ答えが驚いています。実際に私は必要な結果を得る方法を持っていますが、必要以上にコード集約的であり、CPUサイクルを奪うと確信しています。つまり、文字列全体をループし、テキスト部分の幅を繰り返し確認し、スペースの一部をCRLFに置き換えて、折り返しせずにテキストをレンダリングすることができます。誰も答えないなら、私がやることですが、私が必要とするものを行う能力が.netにすでに存在することが疑わしいときは無駄に見えます。 – PaulOTron2000