在一些輸入法程序菜單中常常有手寫板功能,這些功能如何實現呢? 工具
最直接的,咱們能夠使用Windows提供的GDI技術或GDI+技術來實現繪圖功能。可是,要實現一個如此簡單的塗鴉板,也不是那麼容易的事情。幸運的是,咱們能夠直接使用OMCS提供的內置集成了這種功能的一個WinForm控件HandwritingPanel。 this
HandwritingPanel控件的主要接口,代碼 spa
: .net
將HandwritingPanel控件從工具箱拖到你的UI上,能夠經過PenColor和PenWidth屬性設置畫筆的顏色和粗細。運行起來後,就能夠在控件的表面進行塗鴉和手寫了。 orm
若是須要清空手寫板,則調用Clear方法。 blog
當手寫結束的時候,則調用GetHandWriting方法獲得手寫的結果,並保存爲位圖。位圖的大小便是HandwritingPanel控件的尺寸。 接口
OK,下面咱們就寫了一個使用HandwritingPanel來實現手寫塗鴉板的demo,demo的主要代碼以下所示 圖片
- public partial class HandwritingForm : Form
- {
- private Color currentColor = Color.Red;
- private List<float> penWidthList = new List<float>();
- private Bitmap currentImage;
- public Bitmap CurrentImage
- {
- get { return currentImage; }
- }
-
- public HandwritingForm()
- {
- InitializeComponent();
-
- this.handwritingPanel1.PenColor = this.currentColor; //設置畫筆顏色
-
- this.penWidthList.Add(2);
- this.penWidthList.Add(4);
- this.penWidthList.Add(6);
- this.penWidthList.Add(8);
- this.penWidthList.Add(10);
- this.comboBox_brushWidth.DataSource = this.penWidthList;
- this.comboBox_brushWidth.SelectedIndex = 1;
- }
-
- private void button_color_Click(object sender, EventArgs e)
- {
- try
- {
- this.colorDialog1.Color = this.currentColor;
- DialogResult result = this.colorDialog1.ShowDialog();
- if (result == DialogResult.OK)
- {
- this.currentColor = this.colorDialog1.Color;
- this.handwritingPanel1.PenColor = this.currentColor; //設置畫筆顏色
- }
- }
- catch (Exception ee)
- {
- MessageBox.Show(ee.Message);
- }
- }
-
- //設置畫筆寬度
- private void comboBox_brushWidth_SelectedIndexChanged(object sender, EventArgs e)
- {
- if (this.comboBox_brushWidth.SelectedIndex > 0)
- {
- this.handwritingPanel1.PenWidth = this.penWidthList[this.comboBox_brushWidth.SelectedIndex];
- }
- else
- {
- this.handwritingPanel1.PenWidth = this.penWidthList[0];
- }
- }
-
- private void Button_clear_Click(object sender, EventArgs e)
- {
- this.handwritingPanel1.Clear(); //清空手寫板
- }
-
- private void button_Ok_Click(object sender, EventArgs e)
- {
- this.currentImage = this.handwritingPanel1.GetHandWriting(); //獲取手寫圖片
- this.DialogResult = System.Windows.Forms.DialogResult.OK;
- }
-
- private void Button_cancel_Click(object sender, EventArgs e)
- {
- this.DialogResult = System.Windows.Forms.DialogResult.Cancel;
- }
- }
其運行效果以下圖所示:
在vc+開發輸入法常常須要gdi技術開發手寫功能 開發
end,試着練習一下。 get
固然也能夠在網頁上實現手寫輸入功能,相似於百度在線手寫輸入。