私は基本的に私がお互いの下に異なる文字列を描画することを可能にするコントロールを作成しようとしています。 しかし、文字列の幅はコントロールの幅より大きくてはなりません。 この問題を解決するために、私はRectangleFオブジェクトをGraphics.DrawStringメソッドに渡すことを考えていました。それは渡された矩形の幅よりも広い文字列をラップします。文字列が大きすぎると文字列全体を見ることができないという問題は解決しますが、別の問題があります。私はこのラップされた文字列を測定する
Graphics g = e.Graphics; // Paint event
g.DrawString(someText, someFont, someBrush, new PointF(0, 0), someRectangleF);
g.DrawString(someMoreText, someFont, someBrush, new PointF(0, 12), someRectangleF);
ような何かをしようとした場合の問題は、someTextが包まれてしまった場合、三行目は、このように、それは不可能/ハード読み取られるようになって、最初のテキストの上でテキストをペイントすることになります。
私はこの問題の解決策を探していましたが、いくつかの興味深いリンクが見つかりました。ただし、各文字の幅などを測定するforループの使用が含まれていました。 これを行う簡単な方法はありますか?
TextBlockをWrappingで使用することを検討しましたか?構築しようとしているコントロールはListViewのように見えます。なぜカスタムコントロールですか? – Paparazzi
ListViewの使用を検討しました。しかし、私のコントロールは、私のプログラムが印刷できるタイムテーブルを表しています。そして印刷されたListViewは本当に良く見えないので、私自身のコントロールを作成しようとしています。ああ、申し訳ありませんが、私はWinFormsを使用していることに言及するのを忘れました。私は私の質問を編集しました。 – haiyyu