C#實現在圖片上動態寫內容


  之前在項目上遇到這么一個需求,就是要在圖片上寫內容,而且要求是動態,我所謂的動態就是在圖片上寫的內容是動態的。網上找了找,很多人實現了網圖片上寫內容的功能,但是,並沒有實現動態。所以在這里把我的解決辦法跟大家分享一下。

  要實現這個功能,我分了兩步來完成:

  一、在圖片上放添加一個TextBox,輸入框,而且這個輸入框的位置是可以隨意指定的。下邊給大家上源碼:

        /// <summary>
        /// 打開寫字板
        /// </summary>
        private void Write()
        {
            try
            {
                textBox1.Location = new Point(startPoint.X, startPoint.Y);//startPoint為鼠標當前點擊的位置
                textBox1.BorderColor = SystemColors.Highlight;//設置textBox1的邊框顏色
                textBox1.BorderStyle = BorderStyle.FixedSingle;//設置textBox1的邊框樣式。在這里需要注意,
//這個textBox是我自定義的一個控件,可以修改它的邊框顏色,為了效果,我加載的textBox1的邊框是透明的 textBox1.Font = new Font("宋體", 14.25F);//設置textBox1的默認字體跟大小 textBox1.Multiline = true;//允許textBox1可以輸入多行數據,這樣設置textBox1的寬度才有效 textBox1.Size = new Size(100, 50);//設置textBox1的大小 picImage.Controls.Add(textBox1);//把它添加到一個pictrueBox上邊 textBox1.Focus();//讓其獲得焦點,可以直接輸入。 // textBox1.BringToFront(); } catch (Exception) { throw; } }

   首先,我在程序里定義了一個TextBox並且初始化了。然后,我在這里對textBox1進行了一系列的設置,把它添加到pictrueBox上邊。這樣,實現這個功能的第一步就算完成了。加載textBox的目的就是為了實現動態寫內容。

  二、讀取textBox1的內容寫到圖片上邊:

     /// <summary>
        /// 當按下回車鍵時,往圖片上寫字
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void WriteText()
        {
            if (textBox1.Text != null)
            {
                Graphics g = Graphics.FromImage(picImage.Image);//定義一個GDI+
                SolidBrush drawBrush = new SolidBrush(textBox1.ForeColor);//定義一個畫筆,在這里我讀取了textBox1的字體顏色
                Font drawFont = new Font(textBox1.Font.FontFamily, textBox1.Font.Size);//定義一個font,設置字的樣式,大小,都是讀取textBox1的值
         //往圖片上寫字。這里需要注意的是Point,因為在圖片加載的時候你可能采取了一定的壓縮或者放大,所以要乘以壓縮比例scaling g.DrawString(textBox1.Text, drawFont, drawBrush, new Point(startPoint.X * scaling, startPoint.Y * scaling)); picImage.Image.Save(fileName, ImageFormat.Jpeg);//最后就是圖片保存了 picImage.Controls.Remove(textBox1);//然后移除添加的那個textBox1
} }

   在這里還有一點需要注意,有些人可能是定義了一個Bitmap,然后把圖片轉換成Bitmap再往上寫字的,這樣其實沒有必要,而且如果你這樣做的話可能會改變圖片原有的色彩模式。還有我這里是在輸入文字后,按一下“Enter”鍵,完成了寫字,在這里看不到因為我的程序是支持快捷鍵自定義的,所以這些功能我都寫在快捷鍵注冊那一塊了。

  好了,一個簡單的功能就算介紹完了。如果各位有什么不同的建議,歡迎留言!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM