private int BegX = 0;
private int BegY = 0;private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
this.BegX = e.X;
this.BegY = e.Y;
}
private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
//this.Invalidate(new Rectangle(this.BegX,this.BegY,e.X-this.BegX,e.Y-this.BegY));
DrawRect(e);
}private void DrawRect(System.Windows.Forms.MouseEventArgs e)
{
using(Graphics g = this.CreateGraphics())
{
g.DrawRectangle(Pens.Red,this.BegX,this.BegY,e.X-this.BegX,e.Y-this.BegY);
g.Dispose();
}
}
如果 //this.Invalidate(new Rectangle(this.BegX,this.BegY,e.X-this.BegX,e.Y-this.BegY)); 开起来的话 !矩形的左边和上面都看不到 只有矩形的右边和下发被画出来如果 //this.Invalidate(new Rectangle(this.BegX,this.BegY,e.X-this.BegX,e.Y-this.BegY)); 关闭 就会画出 非常多的 矩形
有解决方法吗
private int BegY = 0;private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
this.BegX = e.X;
this.BegY = e.Y;
}
private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
//this.Invalidate(new Rectangle(this.BegX,this.BegY,e.X-this.BegX,e.Y-this.BegY));
DrawRect(e);
}private void DrawRect(System.Windows.Forms.MouseEventArgs e)
{
using(Graphics g = this.CreateGraphics())
{
g.DrawRectangle(Pens.Red,this.BegX,this.BegY,e.X-this.BegX,e.Y-this.BegY);
g.Dispose();
}
}
如果 //this.Invalidate(new Rectangle(this.BegX,this.BegY,e.X-this.BegX,e.Y-this.BegY)); 开起来的话 !矩形的左边和上面都看不到 只有矩形的右边和下发被画出来如果 //this.Invalidate(new Rectangle(this.BegX,this.BegY,e.X-this.BegX,e.Y-this.BegY)); 关闭 就会画出 非常多的 矩形
有解决方法吗
要有变量储存上一个mousemove事件的坐标。在mousemove事件方法时先用背景色来重绘上一个mousemove事件处理时绘制的矩形,即把上一个矩形给erase掉,然后再根据本次mousemove事件中的坐标来绘制最新的矩形
看看你的存储方式吧??
如果画图区本来就有若干矩形,并且和原来的矩形有交合,那么不是把那些矩形的交合部分也擦掉了吗?是不是也要重画那些被连累的矩形?
是的!
我 Email: [email protected] 谢谢了!
private int BegY = 0;
private int lastX = 0;
private int lastY = 0;
private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
DrawRect(e);
}
private void DrawRect(System.Windows.Forms.MouseEventArgs e)
{
using(Graphics g = this.CreateGraphics())
{
g.DrawRectangle(new Pen(this.BackColor),this.BegX,this.BegY,this.lastX - this.BegX, this.lastY - this.BegY);
g.DrawRectangle(Pens.Red,this.BegX,this.BegY,e.X-this.BegX,e.Y-this.BegY);
this.lastX = e.X;
this.lastY = e.Y;
g.Dispose();
}
}
请问:保存按扭是否是保存当前所画的的图形为图片格式啊 如:gif jpg bmp 等!
你那有这样的功能吗?