我正在使用以下代碼構建圖。我需要能夠通過點擊鼠標來改變任何給定矩形的顏色。到目前爲止,我無法找到一種方法來實現這一點。如何更改winforms網格中矩形的背景顏色?
任何想法將不勝感激。
int number;
public List<Rectangle> listRec = new List<Rectangle>();
Graphics g;
public CrochetPtrnDesign()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
number = int.Parse(textBox1.Text);
Rectangle rect = new Rectangle();
listRec.Clear();
rect.Size = new Size((pnlDesign.Width - 1)/number, (pnlDesign.Height - 1)/number);
for (int x = 0; x < number; x++)
{
rect.X = x * rect.Width;
for (int y = 0; y < number; y++)
{
rect.Y = y * rect.Height;
listRec.Add(rect);
}
}
}
catch
{
MessageBox.Show("Please enter a number...");
}
foreach (Rectangle rec in listRec)
{
g = pnlDesign.CreateGraphics();
Pen p = new Pen(Color.Black);
g.DrawRectangle(p, rec);
}
}
_g = pnlDesign.CreateGraphics();從來沒有使用control.CreateGraphics(),除非你真的想要導致非持久性!您需要使用您在課程級別存儲的數據在Paint事件中完成所有繪圖。當這些數據更改通過執行pnlDesign.Invalidate觸發Paint事件並讓它從頭開始繪製__everything__時。 – TaW
1)爲什麼你總是重新創建矩形列表?它需要在尺寸變大時創建,而不是每次點擊。 2)在點擊它們之前矩形有什麼顏色? – TaW
代碼應該做什麼?如果你想通過點擊來改變矩形的顏色,你需要使用'Rectangle.Contains(Point)'對你的矩形進行簡單的命中測試。 –