使用Graphics.DrawString()(.NET 4.0)绘制背景时受背景影响的字符样式

时间:2012-07-04 10:19:22

标签: .net winforms graphics gdi drawstring

背景:我正在使用WinForms和.NET4.0开发遗留地图应用程序。标签,道路,图标被绘制为与地形分开的称为“叠加”的单独位图。叠加层的背景是透明的,稍后将在地形位图上绘制。

问题是在绘制位图上的文本时,文本样式受位图背景的影响。我向您展示叠加的示例图片:

enter image description here

看看标签“abbey”和“white”。 “白色”已在完全透明的背景上绘制,现在看起来像是用粗体书写的。虽然“修道院”中的“ab”看起来是常规文本,因为它已经在图标上绘制。

以下是生成标签的代码:

var bmp = new Bitmap(mapControl.Width, mapControl.Height);
using (var graphics = Graphics.FromImage(bmp))
{
    var labelRectangle = GetLabelBorders();
    Color labelBackgroundColor = Color.FromArgb(128, Color.FromName("LightPink"));
    SolidBrush sb = new SolidBrush(labelBackgroundColor);
    graphics.FillRectangle(sb, labelRectangle );
    graphics.DrawRectangle(WhitePen, labelRectangle .X, labelRectangle .Y, 
                 labelRectangle .Width - 1, labelRectangle .Height - 1);
    Font timesnew8 = new Font("TimesNew", 8);
    StringFormat strForm = new StringFormat();
    strForm.Alignment = StringAlignment.Near;
    graphics.DrawString("abbey", timesnew8, Brushes.Black, labelRectangle , strForm);
}

我希望文字看起来不大胆。我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

正如前面的评论所说:尝试使用Graphics对象上的TextRenderingHint属性来查看它是否以不同方式呈现文本。