C#如何在面板上绘制橡皮筋选择矩形,就像在Windows资源管理器中使用的一样?

时间:2015-08-14 22:19:48

标签: c# winforms

我有一个带有一些用户控件的Flow Layout面板。 我想使用鼠标选择这些控件,就像在Windows文件浏览器中使用的一样。 我试过这些:https://support.microsoft.com/en-us/kb/314945 但它非常闪烁,没有用(我可能错了,请纠正我)。 任何好的例子都可以。

1 个答案:

答案 0 :(得分:0)

绘制橡皮筋矩形的方法如下:

private void panel1_MouseMove(object sender, MouseEventArgs e)
{
    if (e.Button == System.Windows.Forms.MouseButtons.Left)
    {
        panel1.Refresh();
        using (Graphics g = panel4.CreateGraphics())
        {
            Rectangle rect = GetRectangle(mdown, e.Location);
            g.DrawRectangle(Pens.Red, rect);
        }
    }

}

private void panel1_MouseDown(object sender, MouseEventArgs e)
{
    mdown = e.Location;
}

它使用辅助函数:

static public Rectangle GetRectangle(Point p1, Point p2)
{
    return new Rectangle(Math.Min(p1.X, p2.X), Math.Min(p1.Y, p2.Y),
        Math.Abs(p1.X - p2.X), Math.Abs(p1.Y - p2.Y));
}

我没有得到任何闪烁。如果你这样做,也许你编写了Paint evetn,你可能想要使用双缓冲Panel

class DrawPanel : Panel 
{
   public DrawPanel()
    {
        DoubleBuffered = true;
    }
}