在一些输入法程序菜单中常常有手写板功能,这些功能如何实现呢? 工具
最直接的,咱们能够使用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
固然也能够在网页上实现手写输入功能,相似于百度在线手写输入。