2009-04-28 6 views
2

私は、領域内でレンダリングされるテキストを呼び出す関数を使用しています。機能の 基本的な作業は次のとおりです。Graphics.MeasureStringが余分な空白を許容します

Dim measureSize as Size 
Do 
    myFont = new Font(myFont.Name, myFont.Size - 1, FontStyle.Regular, GraphicsUnit.Document) 
    'Initial font size is set insanely high for the moment, during testing. 
    'Low initial font size is not the problem. 
    measureSize = g.MeasureString(myString, myFont) 
Loop until (measuredSize.width < desiredSize.width AND measuredSize.height < desiredSize.height) 

これに伴う問題は、MeasureStringは、それが描画される文字列の前後の空白の多くを追加して、最終的なフォントがあまりにも小さなレンダリングされているということです。

MeasureStringメソッドからすべてのパディングを削除するためにいくつかの議論をすることができますが、現在の検索では何も表示されません。

MeasureStringを使用して境界線なしで文字列のEXACTサイズを測定する方法を知っている人はいますか?それはテキストのサイズではなく、テキストアンチエイリアスの場合のサイズを返すようhttp://www.codeproject.com/KB/GDI-plus/measurestring.aspx

答えて

0

あなたは、TextRenderer.MeasureTextで試してみる必要があります。これを迂回CodeProjectのの記事があります

5

MeasureStringからStringFormat.GenericTypographic。私はTextRendererに対して、メモリ内のビットマップにレンダリングするときにクリアタイプに問題があるため、推奨します。

測定用のTextRendererと描画用のDrawStringを使用すると、遅かれ早かれ、不一致につながることは間違いありません。

関連する問題