私のテキストとフォントは、ほとんどのアプリケーションで適切に見えます。ただし、 .DrawPath() を実行し、パスに GraphicsPath の文字列/テキストがある場合、常にうるさく見えるか、ぼやけて見えます。
文字列を含む .DrawPath を取得して、GrahpicsPath.DrawString と同じくらい見栄えを良くする方法を教えてもらえますか?
//Bay Symbol
dc.DrawImage(Symbols.GetSymbol(SymbolType.Bay, (i + 1).ToString()), (x + (wPx / 2)) - 10, Constants.ELEVATION_START_Y - 35);
public static Bitmap GetSymbol(SymbolType symType, string text = "", bool attachLeg = true)
{
var sym = new Bitmap(50, 50);
sym.SetResolution(150, 150);
using (Graphics dc = Graphics.FromImage(sym))
{
dc.SmoothingMode = SmoothingMode.AntiAlias;
switch (symType)
{
//code removed for clarity
case SymbolType.Bay:
dc.DrawPath(ShopDrawing.Pens.GetSymbolPen(), CreateBaySymbol(text));
if (attachLeg)
AttachSymbolLeg(dc, Constants.BAY_SYMBOL);
break;
};
dc.SmoothingMode = SmoothingMode.Default;
return sym;
}
}
internal static GraphicsPath CreateBaySymbol(string text = "")
{
GraphicsPath myPath = new GraphicsPath();
myPath.AddRectangle(Constants.BAY_SYMBOL);
if (!string.IsNullOrEmpty(text)) { Util.AddStringToPath(myPath, text); }
return myPath;
}
internal static void AddStringToPath(GraphicsPath path, string text)
{
var textSize = TextRenderer.MeasureText(text, Constants.DETAIL_BOX_FONT);
float centerX = (path.GetBounds().Width / 2) - (textSize.Width / 2),
centerY = (path.GetBounds().Height / 2) - (textSize.Height / 2);
//Add the string to the path.
path.AddString(text,
Constants.DETAIL_BOX_FONT.FontFamily,
(int)Constants.DETAIL_BOX_FONT.Style,
Constants.DETAIL_BOX_FONT.Size,
new PointF(centerX + 2, centerY + 2),
StringFormat.GenericDefault)
記号 = 下の立面図の各部分に番号を付ける記号。番号付けが 1 から始まり、2、3 と続く様子がわかります。
これは、幅と高さの数字のように、すべてのフォント/テキストがどのように見えるかを示すスナップショットですが、シンボル内の番号付けはひどく見えます.