【问题标题】:Bitmap Text Background and HorizontalAlignment位图文本背景和水平对齐
【发布时间】:2012-03-02 20:10:58
【问题描述】:

如下所示,我将文本叠加到位图上,我需要能够在文本后面设置背景颜色并设置水平对齐(即左/右/中心),谁能告诉我如何做到这一点.另请注意,文本大小可能会有所不同。

谢谢。

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);
}

【问题讨论】:

    标签: c# text bitmap alignment


    【解决方案1】:

    您可以使用 DrawString 方法的 StringFormat 参数来控制绘制文本的对齐方式。

    【讨论】:

    • 谢谢,我把它和MeasureString一起用了
    【解决方案2】:

    你可能需要TextRenderer.MeasureText

    它返回要显示的文本的大小。结合文字的大小和Bitmap的大小,可以根据需要的Horizo​​ntalAlignment算出文字的合适位置。

    一旦您知道文本的边界(大小和位置),您就可以简单地为这些边界绘制颜色以在顶部绘制文本之前实现背景颜色。

    【讨论】:

    • 不,不要将TextRenderer.MeasureTextGraphics.DrawString 一起使用。它们不会返回相同的值。
    • 我尝试使用 TextRenderer.MeasureText 和 TextRenderer.DrawText 字体模糊,并且还注意到例如 Arial 在 MS Word 中看起来不像 Arial(但使用 DrawString 很好)。
    猜你喜欢
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-23
    • 2017-03-01
    • 1970-01-01
    • 2018-04-18
    相关资源
    最近更新 更多