zoukankan      html  css  js  c++  java
  • C# GDI+ 文字 阴影,描边 的实现

    好的,各位RT 这次是简单的 C# GDI+ 文字描边的实现。。。。
    这次不使用先进的东西。。。。
    先看效果图,如下:
    当然,你自己动手做出的效果我想会更好。我只是抛砖引玉而已,呵呵。
     
                this.Paint += Form1_Paint;//这个写在Form_load事件里面
            
    
            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;
            }
    需要阴影的同学 上面的注释去掉就ok。
     
    好吧。没啥可说的,很多人都会。
    欢迎交流。。。
    by cnblogs Soar
     
     
     
  • 相关阅读:
    java学习55天2020/8/29
    java学习51天2020/8/25
    java学习55天2020/8/31
    java学习49天2020/8/23
    java学习52天2020/8/26
    java学习48天2020/8/22
    2020.12.05
    2020.12.04
    2020.12.07
    2020.12.03
  • 原文地址:https://www.cnblogs.com/SHGF/p/2995021.html
Copyright © 2011-2022 走看看