[英]How to change the background color in a rectangle in a winforms grid?
我正在使用以下代碼構建圖形。 我需要能夠通過使用鼠標單擊來更改任何給定矩形的顏色。 到目前為止,我無法找到實現此目標的方法。
任何想法將不勝感激。
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);
}
}
這不能解決選擇顏色的問題,但是您可以通過添加以下內容來開始:
private void pnlDesign_MouseClick(object sender, MouseEventArgs e)
{
using (Brush brush = new SolidBrush(Color.Red))
{
g.FillRectangle(brush, listRec.Where(r => r.Contains(new Point { X = e.X, Y = e.Y })).First());
}
}
編輯:
更新為使用Reza的建議。
如果需要用顏色填充矩形,請嘗試FillRectangle方法。
如果您只需要更改邊框的顏色,則需要使用另一種顏色再次調用以下代碼來重新渲染邊框:
g = pnlDesign.CreateGraphics();
Pen p = new Pen(Color.Black);
g.DrawRectangle(p, rec);
我找到了一種方法來實現這一目標。 這是我現在正在使用的代碼。 我仍然必須構建顏色選擇工具,但是我認為這將是簡單的部分。 您的所有建議都幫助我找到了解決方案。 謝謝大家
private void pnlDesign_MouseClick(object sender, MouseEventArgs e)
{
Point point = pnlDesign.PointToClient(Cursor.Position);
SolidBrush blueBrush = new SolidBrush(Color.Blue);
int listCount = 0;
for (listCount = 0; listCount < number * number; listCount++)
{
if (listRec[listCount].Contains(point))
{
g.FillRectangle(blueBrush, listRec[listCount]);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.