2012-02-10 19 views
0

私は下に示すようにビットマップにテキストを重ねているので、テキストの背後に背景色を設定し、Horizo​​ntalAlignment(つまり左/右/中央)を設定できる必要があります。どのようにこれを行うことができます。また、テキストのサイズが異なることに注意してください。ビットマップテキストの背景と水平の整列

ありがとうございました。

Bitmap frameBitmap = new Bitmap(streamFrameWidth, streamFrameHeight, 
     streamFrameWidth * 3, 
     System.Drawing.Imaging.PixelFormat.Format24bppRgb, pFrame); 

using (Graphics g = Graphics.FromImage(frameBitmap)) 
{ 
    // Create font and brush. 
    Font drawFont = new Font("Arial", 12, FontStyle.Bold); 

    SolidBrush drawBrush = new SolidBrush(Color.Black); 
    // Create point for upper-left corner of drawing. 
    PointF drawPoint = new PointF(10.0F, 40.0F); 

    //HorizontalAlignment. 

    // draw the text 
    g.DrawString(overlayText, drawFont, drawBrush, drawPoint); 
} 

答えて

1

DrawStringメソッドのStringFormatパラメーターを使用して、描画されたテキストの配置を制御できます。

+0

Thansk、私はこれをMeasureStringと組み合わせて使用​​しました – integra753

0

おそらくTextRenderer.MeasureTextが必要です。

表示するテキストのサイズを返します。テキストのサイズとビットマップのサイズを組み合わせることで、必要なHorizo​​ntalAlignmentに基づいてテキストの適切な位置を決定することができます。

テキストの境界(サイズと位置)が分かれば、上にテキストを描画する前に、その境界に色を塗りつぶして背景色を実装できます。

+0

いいえ、 '' Graphics.DrawString'とTextRenderer.MeasureText'を使用しないでください。彼らは同じ値を返さないでしょう。 –

+0

私はTextRenderer.MeasureTextとTextRenderer.DrawTextを試してみましたが、そのフォントはぼやけていて、たとえばArialはMS WordのArialのようには見えませんでした(しかしDrawStringを使ってうまくいきました)。 – integra753

関連する問題