使用System.Drawing.DrawRectangle绘制选择矩形来选择事物

我有一个Windows窗体应用程序,需要能够选择窗体上的对象,就像您通过左键单击并拖动文件来选择桌面上的文件一样,如下所示:

在这里输入图像描述

我有我自己写的以下代码,但它很糟糕。 这是不对的。 我现在不太担心它的“选择”部分,我主要关心如何画这样的画面?

private void splitContainer1_Panel1_MouseMove(object sender, MouseEventArgs e)
{
    if (mouseDown)
    {
        // TODO: Draw Rectangle (so you can select elements on the canvas).


        Graphics graphics = Graphics.FromHwnd(splitContainer1.Panel1.Handle);
        graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;

        Pen pen = new Pen(Color.SlateBlue, 0.5f);

        graphics.PageUnit = GraphicsUnit.Pixel;

        graphics.DrawRectangle(pen, e.X, e.Y, (e.Location.X + e.X) - lastCursorLocation.X, (e.Location.Y + e.Y) - lastCursorLocation.Y);
    }
}

更新

private void splitContainer1_Panel1_Paint(object sender,PaintEventArgs e){// TODO:绘制矩形(因此您可以选择画布上的元素)。

        Graphics graphics = Graphics.FromHwnd(splitContainer1.Panel1.Handle);
        graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;

        Pen pen = new Pen(Color.SlateBlue, 0.5f);

        graphics.PageUnit = GraphicsUnit.Pixel;

        graphics.DrawRectangle(pen, 1, 1, 1, 1);

        Invalidate();
    }

将代码放入Paint事件并调用Invalidate()之后,根本没有任何东西在表单上绘制。 我显然做错了什么,但是什么?


检查下面的线程。 你在找什么叫做rubber band

在Winforms应用程序中填充橡皮筋


我最终使用了我在Microsoft Connect网站上找到的一些代码:

http://support.microsoft.com/kb/314945

链接地址: http://www.djcxy.com/p/50331.html

上一篇: Using System.Drawing.DrawRectangle to draw Selection Rectangle to select things

下一篇: Coordinate Mismatch Problem