日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

印章WinForm自定义控件封装,提供源码下载

發布時間:2025/7/14 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 印章WinForm自定义控件封装,提供源码下载 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

看了“康忠鑫-Stephen”的文章(http://www.cnblogs.com/axing/archive/2013/06/04/3116328.html)知道了C#如何通過gdi+繪制圖章。但是嫌原來的代碼封裝不夠,不能實現拖控件,改屬性自定義自己的印章。于是下載了代碼研究了一下,準備把這玩意兒封裝成控件。下面看我如何實現!

分析:

1、WinForm控件的PictureBox比較適合來展示印章圖片,于是自定義控件繼承了PictureBox。

2、把常用屬性進行封裝。

總結:封裝成控件沒啥難度。ACTION!

成品觀賞:

1、設計時

2、運行時

?

?

圖章水印效果:

上代碼:

using System; using System.Collections.Generic; using System.Text; using System.Drawing; using System.ComponentModel; using System.Drawing.Drawing2D; using System.Windows.Forms;namespace Com.DataCool.SealDesignLib {/// <summary>/// 可視化圖章控件繼承PictureBox/// </summary>public class VisualSealDesignControl : PictureBox{private string _SealOrgText;/// <summary>/// SealOrgText 圓形排列環繞五角星的機構全稱等文字/// </summary>[DefaultValue(typeof(string), "datacool.cnblogs.com"), Category("印章元素"), Description("圖章的機構中英文名稱、網址等.")]public string SealOrgText{get{return _SealOrgText;}set{_SealOrgText = value;this.Invalidate();}}private string _SealOrgCnText;/// <summary>/// 機構中文簡稱/// </summary>[DefaultValue(typeof(string), "數據酷軟件"), Category("印章元素"), Description("圖章的機構中文簡稱名稱等.")]public string SealOrgCnText{get{return _SealOrgCnText;}set{_SealOrgCnText = value;this.Invalidate();}}[Category("SealDesign"), Description("圖章的機構中文簡稱名稱等.")]private Font _SealFont = new Font("黑體",16,FontStyle.Bold);public Font SealFont{get{return _SealFont;}set{_SealFont = value;this.Invalidate();}}private Color _SealTextColor;[DefaultValue(typeof(Color), "Red"), Category("印章元素"), Description("圖章文字顏色.")]public Color SealTextColor{get{return _SealTextColor;}set{_SealTextColor = value;this.Invalidate();}}private int _SealSize = 180;[DefaultValue(typeof(int), "180"), Category("印章元素"), Description("圖章大小,直徑(像素).")] public int SealSize{get{return _SealSize;}set{_SealSize = value;}}public VisualSealDesignControl(){_SealOrgText = "datacool.cnblogs.com";_SealOrgCnText = "數據酷軟件";SealSize = 180;_SealFont = new Font("宋體", 14, FontStyle.Bold);_SealTextColor = Color.Red;this.Size = new Size(_SealSize, _SealSize);this.SizeMode = PictureBoxSizeMode.Zoom; }/// <summary>//// 重繪出默認圖片/// </summary>/// <param name="pe"></param>protected override void OnPaint(PaintEventArgs pe){if (!DesignMode){TextOnSeal _top = new TextOnSeal();_top.TextFont = SealFont;_top.FillColor = SealTextColor;_top.ColorTOP = Color.Black;_top.Text = SealOrgText;_top.BaseString = SealOrgCnText;_top.ShowPath = true;_top.LetterSpace = 2;_top.SealSize = 180;_top.CharDirection = Char_Direction.Center;_top.SetIndent(20);pe.Graphics.DrawImage(_top.TextOnPathBitmap(), 0, 0);}} }public enum Char_Direction{Center = 0,OutSide = 1,ClockWise = 2,AntiClockWise = 3,} }

關鍵點解釋:

1、重寫PictureBox的OnPaint實際調用TextOnSeal生成圖片。

/// <summary>//// 重繪出默認圖片/// </summary>/// <param name="pe"></param>protected override void OnPaint(PaintEventArgs pe){if (!DesignMode){TextOnSeal _top = new TextOnSeal();_top.TextFont = SealFont;_top.FillColor = SealTextColor;_top.ColorTOP = Color.Black;_top.Text = SealOrgText;_top.BaseString = SealOrgCnText;_top.ShowPath = true;_top.LetterSpace = 2;_top.SealSize = 180;_top.CharDirection = Char_Direction.Center;_top.SetIndent(20);pe.Graphics.DrawImage(_top.TextOnPathBitmap(), 0, 0);}}

?2、屬性變化時,重繪圖片進行刷新

在屬性的Set里強制控件進行刷新,觸發OnPaint事件進行重畫。

完整源碼下載:請猛擊這里喔!

PS:可能有些童鞋覺得無意義。自己覺得喜歡就好。我拖拖拖,拖控件有益身體健康...

總結

以上是生活随笔為你收集整理的印章WinForm自定义控件封装,提供源码下载的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。