c#圖片處理之:在圖片上打上文字

來源:互聯網
上載者:User

以前討論過在一張圖片上加上另一張圖片,說難也不難,基本上只要知道利用GDI+提供的DrawImage函數就可以了。現在需要在圖片上打上文字,其實也很簡單。貼圖用DrawImage,那麼貼文字當然就是DrawString啦。

        //============================設定文字==============================
        /**//// <summary>
        /// 設定文字
        /// </summary>
        /// <param name="b">原始圖片</param>
        /// <param name="txt">顯示的文字</param>
        /// <param name="x">在圖片上的x座標</param>
        /// <param name="y">在圖片上的y座標</param>
        /// <returns>輸出後的圖片</returns>
        public static Bitmap KiSetText(Bitmap b, string txt, int x, int y)
        ...{
            if (b == null)
            ...{
                return null;
            }

            Graphics g = Graphics.FromImage(b);
            g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;

            // 作為示範,我們用Arial字型,大小為32,紅色。
            FontFamily fm = new FontFamily("Arial");
            Font font = new Font(fm, 32, FontStyle.Regular, GraphicsUnit.Pixel);
            SolidBrush sb = new SolidBrush(Color.Red);

            g.DrawString(txt, font, sb, new PointF(x, y));
            g.Dispose();

            return b;
        }

當然,實際使用中當然希望自己靈活設定字型、顏色、大小等資訊。很簡單,根據上面的原理自己再改寫一個函數就行了。比如,

        public static Bitmap KiSetText(Bitmap b, string txt, string TextFont,int TextSize, Color c, int x, int y)
        ...{
            if (b == null)
            ...{
                return null;
            }

            Graphics g = Graphics.FromImage(b);
            g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;

            FontFamily fm = new FontFamily(TextFont);
            Font font = new Font(fm, TextSize, FontStyle.Regular, GraphicsUnit.Pixel);
            SolidBrush sb = new SolidBrush(c);

            g.DrawString(txt, font, sb, new PointF(x, y));
            g.Dispose();

            return b;
        }

如果我們利用VS2005提供的字型控制項,還可以簡化成

        public static Bitmap KiSetText(Bitmap b, string txt, Font font,Color c,int x, int y)
        {
            if (b == null)
            {
                return null;
            }

            Graphics g = Graphics.FromImage(b);
            g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;

            SolidBrush sb = new SolidBrush(c);

            g.DrawString(txt, font, sb, new PointF(x, y));
            g.Dispose();

            return b;
        }

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.