c#實現簡單的手寫板功能

   在一些輸入法程序菜單中常常有手寫板功能,這些功能如何實現呢? 工具

最直接的,咱們能夠使用Windows提供的GDI技術或GDI+技術來實現繪圖功能。可是,要實現一個如此簡單的塗鴉板,也不是那麼容易的事情。幸運的是,咱們能夠直接使用OMCS提供的內置集成了這種功能的一個WinForm控件HandwritingPanel this

        HandwritingPanel控件的主要接口,代碼 spa

.net

 

 將HandwritingPanel控件從工具箱拖到你的UI上,能夠經過PenColor和PenWidth屬性設置畫筆的顏色和粗細。運行起來後,就能夠在控件的表面進行塗鴉和手寫了。      orm

      若是須要清空手寫板,則調用Clear方法。 blog

      當手寫結束的時候,則調用GetHandWriting方法獲得手寫的結果,並保存爲位圖。位圖的大小便是HandwritingPanel控件的尺寸。 接口

      OK,下面咱們就寫了一個使用HandwritingPanel來實現手寫塗鴉板的demo,demo的主要代碼以下所示 圖片


[csharp]  view plain copy
  1. public partial class HandwritingForm : Form    
  2. {    
  3.     private Color currentColor = Color.Red;    
  4.     private List<float> penWidthList = new List<float>();    
  5.     private Bitmap currentImage;    
  6.     public Bitmap CurrentImage    
  7.     {    
  8.         get { return currentImage; }                
  9.     }    
  10.         
  11.     public HandwritingForm()    
  12.     {    
  13.         InitializeComponent();    
  14.           
  15.         this.handwritingPanel1.PenColor = this.currentColor; //設置畫筆顏色    
  16.             
  17.           this.penWidthList.Add(2);    
  18.         this.penWidthList.Add(4);    
  19.         this.penWidthList.Add(6);    
  20.         this.penWidthList.Add(8);    
  21.         this.penWidthList.Add(10);    
  22.         this.comboBox_brushWidth.DataSource = this.penWidthList;    
  23.         this.comboBox_brushWidth.SelectedIndex = 1;    
  24.     }    
  25.     
  26.     private void button_color_Click(object sender, EventArgs e)    
  27.     {    
  28.         try    
  29.         {    
  30.             this.colorDialog1.Color = this.currentColor;    
  31.             DialogResult result = this.colorDialog1.ShowDialog();    
  32.             if (result == DialogResult.OK)    
  33.             {    
  34.                 this.currentColor = this.colorDialog1.Color;    
  35.                 this.handwritingPanel1.PenColor = this.currentColor;   //設置畫筆顏色                     
  36.             }    
  37.         }    
  38.         catch (Exception ee)    
  39.         {                  
  40.             MessageBox.Show(ee.Message);    
  41.         }    
  42.     }    
  43.     
  44.     //設置畫筆寬度    
  45.     private void comboBox_brushWidth_SelectedIndexChanged(object sender, EventArgs e)    
  46.     {    
  47.         if (this.comboBox_brushWidth.SelectedIndex > 0)    
  48.         {    
  49.             this.handwritingPanel1.PenWidth = this.penWidthList[this.comboBox_brushWidth.SelectedIndex];    
  50.         }    
  51.         else    
  52.         {    
  53.             this.handwritingPanel1.PenWidth = this.penWidthList[0];    
  54.         }    
  55.     }    
  56.     
  57.     private void Button_clear_Click(object sender, EventArgs e)    
  58.     {    
  59.         this.handwritingPanel1.Clear(); //清空手寫板    
  60.     }    
  61.     
  62.     private void button_Ok_Click(object sender, EventArgs e)    
  63.     {    
  64.         this.currentImage = this.handwritingPanel1.GetHandWriting(); //獲取手寫圖片    
  65.           this.DialogResult = System.Windows.Forms.DialogResult.OK;    
  66.     }    
  67.     
  68.     private void Button_cancel_Click(object sender, EventArgs e)    
  69.     {               
  70.         this.DialogResult = System.Windows.Forms.DialogResult.Cancel;    
  71.     }            
  72. }    
其運行效果以下圖所示:

在vc+開發輸入法常常須要gdi技術開發手寫功能 開發

end,試着練習一下。 get

固然也能夠在網頁上實現手寫輸入功能,相似於百度在線手寫輸入。

相關文章
相關標籤/搜索