예제 #1
0
        public static FontAndSize GetValue( Graphics g, String text, String fontFamily, int fontSize, int srcWidth )
        {
            FontAndSize wfont = new FontAndSize();

            Font font = null;
            SizeF size = new SizeF();

            for (int i = fontSize; i > 6; i = i - 2) {
                font = new Font( fontFamily, i, FontStyle.Bold );
                size = g.MeasureString( text, font );
                if (size.Width <= srcWidth) break;
            }

            wfont.font = font;
            wfont.size = size;

            return wfont;
        }
예제 #2
0
        /// <summary>
        /// 将原始图片添加文字水印之后存储
        /// </summary>
        /// <param name="srcPath"></param>
        /// <param name="savePath"></param>
        /// <param name="words"></param>
        /// <param name="wp"></param>
        /// <param name="fontSize"></param>
        public static void MakeByText(String srcPath, String savePath, String words, WatermarkPosition wp, int fontSize)
        {
            using (Image src = Image.FromFile(srcPath)) {
                using (Bitmap bm = new Bitmap(srcPath)) {
                    using (Graphics g = Graphics.FromImage(bm)) {
                        FontAndSize  fs = FontAndSize.GetValue(g, words, "arial", fontSize, src.Width);
                        PointF       p  = getTextPoint(src, fs.size, wp);
                        StringFormat sf = getStringFormat();

                        drawText(g, words, fs.font, p, sf);

                        try {
                            bm.Save(savePath);
                        }
                        catch (Exception e) {
                            throw e;
                        }
                    }
                }
            }
        }
예제 #3
0
        public static FontAndSize GetValue(Graphics g, String text, String fontFamily, int fontSize, int srcWidth)
        {
            FontAndSize wfont = new FontAndSize();

            Font  font = null;
            SizeF size = new SizeF();

            for (int i = fontSize; i > 6; i = i - 2)
            {
                font = new Font(fontFamily, i, FontStyle.Bold);
                size = g.MeasureString(text, font);
                if (size.Width <= srcWidth)
                {
                    break;
                }
            }

            wfont.font = font;
            wfont.size = size;

            return(wfont);
        }
예제 #4
0
        /// <summary>
        /// 创建验证码,返回一个 Image 对象
        /// </summary>
        /// <param name="code"></param>
        /// <param name="width"></param>
        /// <param name="height"></param>
        /// <param name="fontFamily"></param>
        /// <returns></returns>
        public Image CreateImage(String code, int width, int height, String fontFamily)
        {
            Bitmap bm = new Bitmap(width, height);

            using (Graphics g = Graphics.FromImage(bm)) {
                g.SmoothingMode = SmoothingMode.AntiAlias;

                HatchBrush brush = new HatchBrush(HatchStyle.SmallConfetti, Color.LightGray, Color.White);
                Rectangle  rect  = new Rectangle(0, 0, width, height);
                g.FillRectangle(brush, rect);

                int         fontsize = rect.Height + 1;
                FontAndSize size     = FontAndSize.GetValue(g, code, fontFamily, fontsize, bm.Width);

                GraphicsPath gpath = getGraphicsPath(code, size.font, rect);

                Color brushColor = ColorTranslator.FromHtml("#000000");
                brush = new HatchBrush(HatchStyle.Divot, brushColor, Color.DarkGray);
                g.FillPath(brush, gpath);

                addRandomNoise(g, rect);
            }
            return(bm);
        }