我正嘗試創建一個程序,用於在單擊鼠標時創建多個圓圈。問題在於,每當我點擊另一個地方時,它們就會消失(移除)。 我創建了一個名爲Ellipse的類,我的圈子被保存。然後我把所有東西放在一個名爲Ellipses的堆棧中。 我看過不同的解決方案,但仍然刪除舊的省略號。 我想知道我在做什麼錯。在窗體上繪製多個圓形
這是我的代碼。
public partial class Form1 : Form
{
int x,y;
Queue<MyEllipce> ellipses = new Queue<MyEllipce>();
MyEllipce ellipse;
public Form1()
{
InitializeComponent();
this.MouseClick += new MouseEventHandler(Form1_MouseClick);
}
private void Form1_Load(object sender, EventArgs e)
{
}
void Form1_MouseClick(object sender, MouseEventArgs e)
{
x = e.X;
y = e.Y;
ellipse = new MyEllipce(x, y);
ellipses.Enqueue(ellipse);
Invalidate();
}
private void btnTaBort_Click(object sender, EventArgs e)
{
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
foreach (MyEllipce item in ellipses)
{
Graphics g = e.Graphics;
MyEllipce ellipse= ellipses.Peek();
ellipse.Draw(g, x, y);
}
}
}
class MyEllipce
{
int x = 0;
int y = 0;
int diameter = 5;
//Constructor
public MyEllipce(int x, int y)
{
this.x = x;
this.y = y;
}
public void Draw(Graphics g, int x, int y)
{
SolidBrush brush = new SolidBrush(Color.Red);
g.FillEllipse(brush,x,y,diameter,diameter);
}
}
你試過我的答案了嗎? –
我會去一個名單;大多數時候你會從頭到尾閱讀它們。而且你不會一般刪除它們,或者你會? (你可以用一個List做一個井)我們正在討論a)用戶輸入和b)屏幕輸出性能根本不是問題。錯誤是假設Peek前進到指針。它沒有。 –
TaW
可以在'Draw()'中使用'brush'變量的'Dispose()',或者使用靜態的[Brushes.Red](https://msdn.microsoft.com/library/windows/apps/system.drawing。 brushes.red)由.Net框架爲您提供。 –