2011-11-07 89 views
2

私は、テキストを描画したいBitmapオブジェクトを持っています。このテキストは、指定された点の右揃えになっています。これは今私がやっているところです:MeasureTextが正しく動作しない

newBitmap = Image.FromFile(bg) as Bitmap; 
Graphics g = Graphics.FromImage(newBitmap); 
var cvt = new FontConverter(); 

String temp = "ddddd" 

ftemp = cvt.ConvertFromString("Times New Roman; 12pt") as Font; 
SizeF p2Size = TextRenderer.MeasureText(temp, ftemp); 
p2Nick = new PointF(PosX - p2Size.Width, PosY); 

g.DrawString(temp, ftemp, new SolidBrush(myColor), p2Nick); 

問題は、右側からの距離が大きくなるほどtempに入力するテキストが多いことです。

enter image description here

たぶん誰かが私の間違いを指摘することができます。もちろん、私は多くを単純化しましたが、これはかなり起こります。

+0

PosXの価値は何ですか? – SeriousSamP

答えて

0

ああ、私はそれが大好きです...私は何時間も自分のコードを見ていて、間違いを見つけられませんでした。ちょうど数分待って帰ってきて、私は新しい位置を計算した後に傾きを計算していたが、計算されたポイントに新しい解像度を調整していないことに気づいた。

この質問には本当に申し訳ありません.-

0

あなたがして描画していることで、文字列を測定するために、同じライブラリを使用して、より良い運を持っていることがあります。

例:

SizeF p2Size = g.MeasureString(temp, ftemp); 

また、システムのDPIテキストの設定が結果に影響を与えます、これを考慮に入れることができます:Graphics.DpiX。

最後に、TextFormatFlags.NoPaddingという設定があると思いますが、Graphics.MeasureString()に切り替えると、代わりにStringFormatオブジェクトが使用されます。

関連する問題