0

背景: 私は、WinForms と .NET4.0 を使用してレガシー マップ アプリケーションに取り組んでいます。ラベル、道路、アイコンは、地形とは別に「オーバーレイ」と呼ばれる別のビットマップに描画されます。オーバーレイの背景は透明で、後で地形ビットマップ上にペイントされます。

問題は、ビットマップ上にテキストを描画しているときに、テキスト スタイルがビットマップの背景の影響を受けることです。オーバーレイの写真の例を示します。

ここに画像の説明を入力

「abbey」と「white」というラベルを見てください。「白」は完全に透明な背景に塗りつぶされ、太字で書かれたように見えます。「abbe」の「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);
}

太字ではないテキストが必要です。どうやってやるの?

4

1 に答える 1

2

前のコメントで述べたように、Graphics オブジェクトでTextRenderingHintプロパティを使用して、テキストのレンダリングが異なるかどうかを確認してください。

于 2012-07-04T11:44:38.883 に答える