0

Rectangleを使用してデータを表示するカスタムコントロールに取り組んでいます。ここで、長方形の幅と高さが100に設定されているとします。

データ量が少ない場合は問題ありませんが、DrawStringメソッドを使用して描画させることができます。ただし、データが大きくなり、クリップされる場合があります。

MeasureStringメソッドを使用しようとしましたが、正しい値を取得できません。幅100ピクセルの長方形で表示する必要がある場合、文字列のサイズ[長さと高さの両方]を確認する方法はありますか。つまり、高さを増やすことはできますが、幅を増やすことはできません。そのため、文字列の正しい高さを使用して、その長方形に完全に表示されるようにすることができます。

4

2 に答える 2

0

克服すべき2つの明確な問題があるようですね

  1. 文字列を正確に測定しますこれについては、 TextRenderer.MeasureTextを参照してください。これにより、予想されるサイズがピクセル単位で表示されます。

    別の方法は、文字列を描画してから、テキストの色を含まない画像内の左端と右端の列を探して自分で測定することです。これにはGetPixelを使用できます。この方法ではより多くのコードが必要になり、処理が遅くなるため、お勧めしません。

  2. 100の幅内に収まるようにしながら、描画した文字列のサイズを最大化します。そのためには、ループ内の文字列を測定するだけで、100pxを超えるフォントサイズを見つけることができます。推測して、そこから作業してください。

于 2010-05-14T12:54:41.270 に答える
0

長方形の高さを0に設定します。次に、MeasureStringを実行した後、指定された幅の長方形内に配置できる文字列の高さを見つけることができます。その高さを長方形に与えて描画し、その中に文字列を描画します。

http://www.tigraine.at/2009/01/03/gdi-drawing-string-with-word-wrap/

于 2010-06-29T07:42:31.787 に答える