private void panel1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
MPdown.x=e.X;
MPdown.y=e.Y;
}private void panel1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(e.Button==MouseButtons.Left)
{
Graphics graphics = this.panel1.CreateGraphics();
graphics.DrawRectangle(RedPen,(float)MPdown.x,(float)MPdown.y,(float)(e.X-MPdown.x),(float)(e.Y-MPdown.y));
}
this.panel1.Invalidate();
}
---------------------------------------
public class MyPanel : System.Windows.Forms.Panel
{
public MyPanel() : base()
{
SetStyle(ControlStyles.UserPaint|ControlStyles.DoubleBuffer|ControlStyles.AllPaintingInWmPaint|ControlStyles.ResizeRedraw,true);
this.UpdateStyles();
}
}
---------------------------------------
MPdown是我存放鼠标位置的结构体panel1是MyPanel
---------------------------------------
运行鼠标圈选的时候总是闪烁得厉害
请高手指点……谢谢!!
{
MPdown.x=e.X;
MPdown.y=e.Y;
}private void panel1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(e.Button==MouseButtons.Left)
{
Graphics graphics = this.panel1.CreateGraphics();
graphics.DrawRectangle(RedPen,(float)MPdown.x,(float)MPdown.y,(float)(e.X-MPdown.x),(float)(e.Y-MPdown.y));
}
this.panel1.Invalidate();
}
---------------------------------------
public class MyPanel : System.Windows.Forms.Panel
{
public MyPanel() : base()
{
SetStyle(ControlStyles.UserPaint|ControlStyles.DoubleBuffer|ControlStyles.AllPaintingInWmPaint|ControlStyles.ResizeRedraw,true);
this.UpdateStyles();
}
}
---------------------------------------
MPdown是我存放鼠标位置的结构体panel1是MyPanel
---------------------------------------
运行鼠标圈选的时候总是闪烁得厉害
请高手指点……谢谢!!
解决方案 »
- 关于切换页面过场动画的问题
- 求一个正则表达式,将所有不包括回车符的连续空格字符转换为制表符(\t)
- 关于在TreeView节点中添加右键菜单的问题,求助~~
- server 2003 局域网 无法访问
- datagridview的问题
- WCF如何返回MarshalByRefObject对象
- 请问:在C#中如何将条形码控件生成的图片直接保存到SQL数据库中?谢谢
- C# SendMessage 隐藏窗体无法收到消息
- 怎么调用外部程序啊
- (不光为分数的朋友进来看看)要编程创建一个Access数据库,考虑到以后可能更换数据库(SQLServer/Oracle),我该用SQL语句, ADOX还是第三方
- c#可以做这样的东西吗?类似网管软件的东西
- 本人求一类似qq msn这样的通讯工具,up有分
实际上this.panel1.Invalidate();这句也会引起刷新
private Point startPos = new Point(0, 0);
private Point endPos = new Point(0, 0);private void panel1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
down = true;
startPos = new Point(e.X, e.Y);
}private void panel1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
down = false;
}private void panel1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
endPos = new Point(e.X, e.Y);
panel1.Invalidate();
}private void panel1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
if(down)
{
Pen pen = new Pen(Color.Blue, 0.1f);
pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
Rectangle rect = new Rectangle(
(int)Math.Min(startPos.X, endPos.X),
(int)Math.Min(startPos.Y, endPos.Y),
(int)Math.Abs(endPos.X - startPos.X),
(int)Math.Abs(endPos.Y - startPos.Y));
e.Graphics.DrawRectangle(pen, rect);
}
}
分少笑纳