2010-11-30 2 views
5

私がやっていることは、文字列をビットマップに描画するためにDrawString()メソッドを使用することです。これを行うには、ビットマップを作成し、ビットマップからGraphicsオブジェクトを取得し、そのGraphicsオブジェクトでDrawString()を呼び出す必要があります。テキスト文字列を保持するビットマップサイズを決定する

問題は、私が最初のビットマップを作成するときに、ビットマップを作成するのにどのくらいの幅と長さのピクセルを作成するのかを事前に知ることです。

これはMeasureString()と関係がありますが、MeasureString()を使用するには、ビットマップからGraphicsオブジェクトを取得する必要があります。ビットマップを作成するまで私はそれを得ることができません、私はサイズを知るまではできません。それは円形のパラドックスのようです!

誰か助けてください。

答えて

6

あなたは

private static Bitmap measureBmp = new Bitmap(1, 1); 

に測定するために、小さな静的なビットマップを作成することができますそして、あなたはいつも

using (var measureGraphics = Graphics.FromImage(measureBmp)) 
{ 
    var stringSize = measureGraphics.MeasureString("measureString", this.Font); 
} 

として測定した画像のサイズは、私が持っていた測定

+0

ええ、1x1ビットマップを作成しました。私のビットマップは明らかにそれよりも大きくなる必要があります。 – Icemanind

+0

icemanind:1x1ビットマップは測定用です。 'stringSize'を取得すると、適切なサイズのビットマップを作成できます。 – Gabe

+0

@icemanind、ビットマップのサイズはMeasureStringには影響しません。ビットマップが1x1であっても、これは私のコンピュータ上で 'stringSize:{Width = 77.4010315 Height = 13.8251925}'を返します。 –

0

には影響を与えません。 Javaでこれを行います。そこでは、必要な構造体にアクセスするための無償のグラフィック要素を作成しました。 Graphicsオブジェクトにアクセスするには、1x1ビットマップを作成するだけで済むかもしれません。それから、それを集める。

グラフィックス要素の寸法がMeasureStringの結果に影響しないことを望みます。

関連する問題