C# GDI+ 文字 阴影 描边

        void Form1_Paint(object sender, PaintEventArgs e)
        {
            //Graphics g = e.Graphics;
            //string s = "Outline";
            //RectangleF rect = this.ClientRectangle;
            //Font font = this.Font;
            //StringFormat format = StringFormat.GenericTypographic;
            //float dpi = g.DpiY;
            //using (GraphicsPath path= GetStringPath(s, dpi, rect, font, format))
            //{
            //    g.DrawPath(Pens.Black, path);
            //}


            Graphics g = e.Graphics;
            string s = "宋体宋体宋体宋体宋体宋体宋体宋体宋体";
            RectangleF rect = new RectangleF(350, 0,400,200);
            Font font = this.Font;
            StringFormat format = StringFormat.GenericTypographic;
            float dpi = g.DpiY;
            using (GraphicsPath path = GetStringPath(s, dpi, rect, font, format))
            {
                //阴影代码
                //RectangleF off = rect;
                //off.Offset(5, 5);//阴影偏移
                //using (GraphicsPath offPath = GetStringPath(s, dpi, off, font, format))
                //{
                //    Brush b = new SolidBrush(Color.FromArgb(100, 0, 0, 0));
                //    g.FillPath(b, offPath);
                //    b.Dispose();
                //}
                g.SmoothingMode = SmoothingMode.AntiAlias;//设置字体质量
                g.DrawPath(Pens.Black, path);//绘制轮廓(描边)
                g.FillPath(Brushes.White, path);//填充轮廓(填充)
            }

        }




        GraphicsPath GetStringPath(string s, float dpi, RectangleF rect, Font font, StringFormat format)
        {
            GraphicsPath path = new GraphicsPath();
            // Convert font size into appropriate coordinates
            float emSize = dpi * font.SizeInPoints / 72;
            path.AddString(s, font.FontFamily, (int)font.Style, emSize, rect, format);

            return path;
        }

http://t.zoukankan.com/SHGF-p-2995021.html

posted @ 2022-09-02 13:06  毛毛虫!  阅读(599)  评论(0)    收藏  举报