2010-11-30 18 views
5

Yapmaya çalıştığım şey, bitmap'e bir dize çizmek için DrawString() yöntemini kullanmaktır. Bunu yapmak için, bir bitmap oluşturmalı ve bitmap'ten bir Grafik nesnesi almalı, daha sonra bu Graphics nesnesinde DrawString() öğesini çağırmalıyım.Metin dizesini tutmak için bitmap boyutunu belirleme

Sorun şu ki, ilk bitmapimi oluşturduğumda, bitmapimi kaç piksel genişliğinde ve uzunluğunda oluşturduğumu önceden nasıl bilebilirim?

Bunun MeasureString() ile ilgili bir şey olduğunu biliyorum, ancak MeasureString() yöntemini kullanabilmek için, bitmap'ten Graphics nesnesini almam gerekiyor. Ben bitmap'i oluşturana kadar onu alamıyorum. Dairesel bir paradoks gibi görünüyor!

Birisi bana bunun üzerinde yardımcı olabilir misiniz? Sonra

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

Eğer

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

resmin boyutu zorundaydım ölçümü

cevap

6

Java'da bunu yapmak için ihtiyacım olan yapıya erişim sağlamak için serbest bir grafik elemanı yarattım. Sadece Graphics nesnesine erişmek için 1x1 bitmap oluşturmaya başlayabilirsiniz. Sonra toplanalım.

Buradaki umut, grafik öğesinin boyutlarının MeasureString sonucunu etkilememesidir.

+0

Evet, ancak 1x1 bitmap oluşturdunuz. Benim bitmapimin bundan daha büyük olması gerekecek. – Icemanind

+0

icemanind: 1x1 bitmap yalnızca ölçüm içindir. "StringSize" aldığınızda, uygun boyutta bitmap oluşturabilirsiniz. – Gabe

+0

@icemanind, bitmap'in boyutunu ölçülemez MeasureString, bitmap 1x1 olsa bile, bu 'stringSize: {Width = 77.4010315 Height = 13.8251925}' bilgisayarımda döndürür. –

0

etkilemez her zamanki gibi ölçmek on ölçmek için küçük bir statik Bitmap oluşturabilir