如果我在面板中繪製一些矩形,我如何選擇其中一個並將其刪除。我的代碼在這裏,我把它寫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();
如果我在面板中繪製一些矩形,我如何選擇其中一個並將其刪除。我的代碼在這裏,我把它寫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();
Rectangle
將有Region
。
您需要訂閱以下之一: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.
}
}
這段代碼假定沒有矩形重疊。你也可以從Rectangle的點創建一個GraphicsPath,然後從那個路徑創建一個GraphicsPath,我相信你可以創建一個Region來使得矩形的實際行能夠被選中。
更新根據註釋
我檢查,我沒有看到Region
屬性Rectangle
。因此,創建區域執行以下操作:
var gPath = new GraphicsPath();
gPath.AddRectangle(rectangle);
var region = new Region(gPath);
什麼是myRect?我沒有在我的代碼中創建矩形對象 – user3170648
第一條評論提醒您假設您正在緩存對矩形的引用。你還有什麼能夠知道選擇了哪個矩形? :) – IAbstract
請問我是什麼地區?因爲我從矩形創建對象來保存矩形的位置和大小:rectangle ob = new Rectangle(e.X,e.Y,100,60); – user3170648
拉絲面板上就像是借鑑了一張紙 - 他們是銘刻在和不再是一個矩形,但像素的集合。即使您可以使用背景顏色在要清除的矩形上繪製矩形,但您不會「移除矩形」,只需在現有矩形上繪製矩形即可。
你知道你要刪除的矩形的大小和位置? – 2014-01-07 20:14:29
我可以通過這一行在面板的任何位置繪製矩形:g.DrawRectangle(p,e.X,e.Y,100,60); – user3170648
我知道,但你必須知道你想要刪除的矩形的位置。 – 2014-01-07 20:18:22