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)