日期:2014-05-20  浏览次数:20921 次

100分求解决办法?大家帮忙
我做一个简单的画线程序 因为特殊要求(网上阅卷)要把涂鸦保存下来 我把鼠标画线经过的点都保存在SQL数据库里面 画线中间停顿时在数据库里插入一个(-1,-1);因为这样鼠标经过的点是以一个单位保存在数据库里面的,数据量太大 我想简化一下 但是又要保证把数据恢复出来时尽量的和原来所画线尽量的相似 大家有什么好的算法吗
我的一部分程序是这样的
private   void   MsMove(object   sender,System.Windows.Forms.MouseEventArgs      e)
{
 string   str= "server=127.0.0.1;Integrated      Security=SSPI;database=webdevelop ";
SqlConnection   conn=new   SqlConnection(str);

if(pen)
{    
  g.DrawLine(new   Pen(Color.Red),   oldX,   oldY,   e.X,   e.Y);
oldX   =   e.X;
oldY   =   e.Y;
p   =   new   Point(e.X,e.Y);
array.Add(p);
    string   sql= "INSERT   INTO   ZUOBIAO   (XX,YY)   VALUES   ( "+p.X+ ", "+p.Y+ ") ";
  SqlDataAdapter   adapter=new   SqlDataAdapter(sql,conn);
  DataSet   dataset=new   DataSet();
 adapter.Fill(dataset, "ZUOBIAO ");

}
private   void   MsDown(object   sender,   System.Windows.Forms.MouseEventArgs   e)
{    

if(pen)
{
string   str= "server=127.0.0.1;Integrated   Security=SSPI;database=webdevelop ";
SqlConnection   conn=new   SqlConnection(str);
SqlDataAdapter   adapter1=new   SqlDataAdapter( "INSERT   INTO   ZUOBIAO   (XX,YY)   VALUES   (-1,-1) ",conn);
DataSet   dataset1   =   new   DataSet();
conn.Open();

adapter1.Fill(dataset1,   "ZUOBIAO ");
conn.Close();
}

if(e.Button   ==   MouseButtons.Left)
{
isMoving   =   true;

}
Drag   =   true;        
oldX=e.X;
oldY=e.Y;
}
private   void   MsUp(object   sender,   System.Windows.Forms.MouseEventArgs   e)
{
Drag   =   false;
if(e.Button   ==   MouseButtons.Left)
isMoving   =   false;

而且我想填加一个右键菜单,在画过的线上右击 可以把这段线删除
大家有什么好的办法吗??
都来帮帮我吧

------解决方案--------------------
mark

楼上是个办法,而且不用每次Move都新建连接吧。。

------解决方案--------------------
或许将痕迹保存为jpg文件会容易些,载入时同时载入试卷和背景透明的文件就可以显示试卷和痕迹了。
------解决方案--------------------
你把涂鸦所生成的Image或者bmp保存下来就可以了!
------解决方案--------------------
我写了一个程序,楼主可以参考下,然后按自己的喜好改一下就可以了(VS2005):
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace drawImageApp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private struct lineData
{
public Point startPoint;
public Point endPoint;
public lineData(Point start, Point end)
{
startPoint = start;
endPoint = end;
}
}
private List <lineData> list;
private Point lastPoint = Point.Empty;
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
this.list = new List <lineData> ();
//TODO:可以在这里从数据库中加载以前存储的数据以供显示
}
protected override void OnMouseDown(MouseEventArgs e)