C#影像處理繪製公章

來源:互聯網
上載者:User
最近開始學習影像處理這一塊了,學一點就記錄一點,等寫完也出了一個小軟體了~

這裡的是:繪製公章。

#region 繪製公章        private void simpleButton_繪製公章_Click(object sender, EventArgs e)        {            int tem_Line = 0;  //圓的直徑            int circularity_W = 5; //畫筆的粗細            string star_Str = "★";  //星星            Font star_Font = new Font("Arial", 30, FontStyle.Regular);//設定星號的字型樣式            #region 畫圓            if (panel_繪製公章.Height > panel_繪製公章.Width)  //如果panel控制項的高度大於等於寬度            {                tem_Line = panel_繪製公章.Width;  //設定寬度為圓的直徑            }            else            {                tem_Line = panel_繪製公章.Height;  //設定高度為圓的直徑            }            //設定圓的繪製地區=>現在是正方形的地區            rect = new Rectangle(circularity_W, circularity_W, tem_Line - 2 * circularity_W, tem_Line - 2 * circularity_W);            //補充:Graphics必須有載體,也就是在哪裡繪            //所以必須是this.CreateGraphics或者Panel..CreateGraphics等格式            Graphics g = panel_繪製公章.CreateGraphics();//執行個體化Graphics類            //消除繪製圖形的鋸齒            g.SmoothingMode = SmoothingMode.AntiAlias;  //System.Drawing.Drawing2D;                       g.Clear(Color.White);  //以白色清空panel1控制項的背景,防止重複畫                       Pen myPen = new Pen(Color.Red, circularity_W);  //設定畫筆(顏色和粗細)            g.DrawEllipse(myPen, rect);  //繪製圓            #endregion            #region 畫星星            SizeF Var_Size = new SizeF(rect.Width, rect.Height);  //執行個體化SizeF類            Var_Size = g.MeasureString(star_Str, star_Font);  //對指定字串進行測量            //正中間的位置繪製星號            float star_x = (rect.Width / 2F) + circularity_W - Var_Size.Width / 2F;            float star_y = rect.Height / 2F - Var_Size.Width / 2F;            g.DrawString(star_Str, star_Font, myPen.Brush, new PointF(star_x, star_y));                        #endregion            #region 畫文字            Var_Size = g.MeasureString("本人專用章", Var_Font);//對指定字串進行測量            //繪製文字:在中間,但是在星星下面            float m = (rect.Width / 2F) + circularity_W - Var_Size.Width / 2F;            float n = rect.Height / 2F + Var_Size.Height * 2;            g.DrawString("本人專用章", Var_Font, myPen.Brush, new PointF(m, n));            int len = 0;            if (inputWords != null) //如果沒有輸入文字,加判斷            {                len = inputWords.Length;//擷取字串的長度            }            float angle = 180;//設定文字的初始旋轉角度                        float change = 0;            if (len > 1) //一個字的需要特殊處理            {                change = 180 / (len - 1);            }            for (int i = 0; i < len; i++)//將文字以指定的弧度進行繪製            {                if (len > 1)                {                    //相當於把座標系移動到了正中間                    float x = (tem_Line + circularity_W / 2) / 2;                    float y = (tem_Line + circularity_W / 2) / 2;                    //將指定的平移添加到g的變換矩陣前                             g.TranslateTransform(x, y);                    g.RotateTransform(angle);//將指定的旋轉用於g的變換矩陣                       Brush myBrush = Brushes.Red;//定義畫刷                    //需要注意,這時文字的位置的座標位置是以新的座標係為基礎得到的                    float words_x = tem_Line / 2 - 6 * circularity_W;                    float words_y = 0;                    g.DrawString(inputWords.Substring(i, 1), Var_Font, myBrush, words_x, words_y);//顯示旋轉文字                    g.ResetTransform();//將g的全域變換矩陣重設為單位矩陣=>對應TranslateTransform,相當於恢複操作                    angle += change;//設定下一個文字的角度                }                else                {                    //輸入的文字為一個時候是特殊情況,單獨考慮                    float x = (tem_Line + circularity_W / 2) / 2;                    float y = (tem_Line + circularity_W / 2) / 2;                           g.TranslateTransform(x, y);                    g.RotateTransform(0);                      Brush myBrush = Brushes.Red;                    float words_x = -circularity_W*3;                    float words_y = -(tem_Line / 2 - 2 * circularity_W);                    g.DrawString(inputWords.Substring(i, 1), Var_Font, myBrush, words_x, words_y);                    g.ResetTransform();                }                            }            #endregion        }        private void simpleButton2_Click(object sender, EventArgs e)        {            inputWords = textBox_文字.Text;            MessageBox.Show("儲存成功!");        }#endregion

效果預覽圖:

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.