文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>WINCE上的手写签名,同样可应用于WINFORM.

WINCE上的手写签名,同样可应用于WINFORM.

时间:2011-02-16  来源:欧迪

代码很简单,如下所示

using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;

namespace SmartDeviceProject1
{
public partial class MobileTest : Form
{

List
<Points> handTrack = new List<Points>();
public Graphics pb_Graphics;
Bitmap pb_BMP
= new Bitmap(240, 268);//签名时图片的大小
int index = 0; //第几笔
bool isDrawing = false;//用于在move时,只有在Down的时候才画.


public MobileTest()
{
InitializeComponent();
}

private void Form1_Paint(object sender, PaintEventArgs e)
{
try
{
pb_Graphics
= Graphics.FromImage((System.Drawing.Image)pb_BMP);//获取图片的Graphics
pb_Graphics.Clear(
this.BackColor);
foreach (Points item in handTrack)
{
if (item.PT.Count > 1)
pb_Graphics.DrawLines(
new Pen(Color.Black), item.PT.ToArray());
}
e.Graphics.DrawImage(pb_BMP,
0, 0);//其实是在当前控件上写了一个图片
pb_Graphics.Dispose();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

private void Form1_MouseDown(object sender, MouseEventArgs e)
{
isDrawing
= true;
handTrack.Add(
new Points());
handTrack[index].PT.Add(
new Point(e.X, e.Y));
this.Refresh();
}

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (isDrawing == true)
{
handTrack[index].PT.Add(
new Point(e.X, e.Y));
this.Refresh();
}
}

private void Form1_MouseUp(object sender, MouseEventArgs e)
{
index
++;
isDrawing
= false;
}
//一个菜单按钮,用于清空当前的签名.

private void menuItem1_Click(object sender, EventArgs e)
{
this.handTrack.Clear();
index
= 0;
this.Refresh();
}


}

class Points
{
public List<Point> PT = new List<Point>();
}
}

在Paint的时候,用了当item.PT.count>1的时候才画,这是因为,这个方法只有在集合点数大于1的时候才正确,否则会出现参数错误的报错信息.

当然也可以在0<count<=1的时候,调用DrawLine来单独画点.

代码在CINCE 5.0 ,WINDOWS XP上测试通过.

使用VS2008,SDK为3.5

排行榜 更多 +
方块枪战战场安卓版

方块枪战战场安卓版

飞行射击 下载
战斗火力射击安卓版

战斗火力射击安卓版

飞行射击 下载
空中防御战安卓版

空中防御战安卓版

飞行射击 下载