1

二重線フォントで画像に透かし文字列を描画する必要があります。フォントは設定可能である必要がありますが、文字は常に二重線で描画する必要があります。結果の画像がどのように見えるかの画像を添付しています:

二重線フォントの透かし

4

2 に答える 2

5

これは、テキストをパスに変換し、部分的に透明なペンでパスを描画することで取得できます。使用するコア 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);
    }

生成するもの:

ここに画像の説明を入力

于 2012-10-06T17:20:52.330 に答える
0

常に問題を検索エンジンに入力してください。同様の回答を探していることがわかりました。

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

于 2012-10-06T14:10:30.677 に答える