【问题标题】:Draw a watermark string on image with double line fonts使用双线字体在图像上绘制水印字符串
【发布时间】:2012-10-06 13:51:28
【问题描述】:

我需要用双线字体在图像上绘制水印字符串。字体应该是可配置的,但字符应该始终使用双线绘制。我附上了一张图片,结果图片应该是什么样子:

【问题讨论】:

    标签: .net graphics system.drawing


    【解决方案1】:

    您可以通过将文本转换为路径并使用部分透明的笔绘制路径来获得此信息。使用的核心 api 是 Graphics.AddText()。这是一个使用它的示例方法:

        public static Bitmap Watermark(Image srce, string text, Font font, float angle) {
            Bitmap dest = new Bitmap(srce);
            var color = Color.FromArgb(120, Color.White);
            using (var gr = Graphics.FromImage(dest)) 
            using (var gp = new GraphicsPath())
            using (var pen = new Pen(color, 5)) {
                var sf = new StringFormat();
                sf.LineAlignment = sf.Alignment = StringAlignment.Center;
                gp.AddString(text, font.FontFamily, (int)font.Style, font.SizeInPoints, 
                             new Rectangle(-dest.Width/2, -dest.Height/2, dest.Width, dest.Height), 
                             sf);
                gr.TranslateTransform(dest.Width / 2, dest.Height / 2);
                gr.RotateTransform(-angle);
                gr.DrawPath(pen, gp);
            }
            return dest;
        }
    

    示例用法:

        using (var bmp = Properties.Resources.Penguins) 
        using (var font = new Font(new FontFamily("Arial"), 144)) {
            pictureBox1.Image = Watermark(bmp, "DEMO", font, 45);
        }
    

    产生:

    【讨论】:

      【解决方案2】:

      总是在某些搜索引擎中输入您的问题,我发现这是在寻找类似的答案:

      http://www.neowin.net/forum/topic/269276-c-drawing-outline-text/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-04-30
        • 2011-08-29
        • 1970-01-01
        • 1970-01-01
        • 2019-07-15
        • 2013-07-13
        • 1970-01-01
        相关资源
        最近更新 更多