0

私のテキストとフォントは、ほとんどのアプリケーションで適切に見えます。ただし、 .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 と続く様子がわかります。

これは、幅と高さの数字のように、すべてのフォント/テキストがどのように見えるかを示すスナップショットですが、シンボル内の番号付けはひどく見えます.

テキストを含むグラフィック DrawPath がぼやけている

4

0 に答える 0