C# 如何选择绘制的矩形并在面板中清除它?

C# 如何选择绘制的矩形并在面板中清除它?,c#,C#,若我在面板中绘制了一些矩形,我如何选择其中一个并删除它。我在这里的代码是在panel_OnClick事件中编写的: g = panel1.CreateGraphics(); Pen p = new Pen(Color.Black); p.Width = 2; g.DrawRectangle(p, e.X, e.Y, 100, 60); p.Dispose(); g.Dispose(); 矩形将有一个区域 您需要订阅以下内容之一:MouseClick,MouseDown,MouseUp // a

若我在面板中绘制了一些矩形,我如何选择其中一个并删除它。我在这里的代码是在panel_OnClick事件中编写的:

g = panel1.CreateGraphics();
Pen p = new Pen(Color.Black);
p.Width = 2;
g.DrawRectangle(p, e.X, e.Y, 100, 60);
p.Dispose();
g.Dispose();

矩形
将有一个
区域

您需要订阅以下内容之一:
MouseClick
MouseDown
MouseUp

// assuming you keep a reference of the rectangle

void OnMouseClick(object sender, MouseEventArgs e) {
   if(myRect.Region.IsVisible(e.Location) {
      // perform action on myRect ... 
      // have window Invalidate(myRect)
      // Refresh() the invalidated area.
   }   

}
此代码段假定没有矩形重叠。您还可以从矩形的点创建一个GraphicsPath,然后从该路径,我相信您可以创建一个区域来选择矩形的实际线条

根据评论更新


我检查了,但没有看到
矩形
区域
属性。因此,要创建区域,请执行以下操作:

var gPath = new GraphicsPath();
gPath.AddRectangle(rectangle);

var region = new Region(gPath);  

在面板上画画就像在一张纸上画画——它们被蚀刻,不再是矩形,而是像素的集合。即使您可以使用背景色在要清除的矩形上绘制一个矩形,您也不会“删除矩形”,您只需在现有矩形上绘制一个矩形。

您知道要删除的矩形的大小和位置吗?我可以通过以下行在面板中的任意位置绘制矩形:g.DrawRectangle(p,e.X,e.Y,100,60);我知道,但你必须知道你要删除的矩形的位置。所以矩形的宽度和高度是已知的,但位置可以在面板中的任何位置,你能帮我吗?你说的“删除”是什么意思?用另一种颜色画在它上面就行了?你真的不能“撤消”因为在绘制图形之前,您没有保存图形中任何内容的先前状态。如果您使用XOR笔绘制,第二次绘制完全相同的矩形将取消它。myRect是什么?我没有在codeFirst注释中从矩形创建对象,这是一个假设,即您正在缓存对XOR的引用ectangle。否则,您如何知道选择的是哪个矩形?:)请问区域是什么?因为我已经从矩形创建了对象来保存矩形的位置和大小:矩形ob=新矩形(e.X,e.Y,100,60);谢谢你,我真的需要另一个帮助:如何在面板中打开扩展名为.xml的绘图文件,意味着如何在面板中打开它,下面是代码:OpenFileDialog open=new OpenFileDialog();open.Filter=“xml文件|*.xml”;DialogResult=open.ShowDialog();//显示对话框。if(result==DialogResult.OK)//测试结果。{FileStream fs=(FileStream)open.OpenFile();fs.Close();}这完全是另一个问题。