我創造了這樣的圖片框網格:添加CellPaint事件圖片框與網格在上面畫了
private void PictureBoxPaint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
int numOfCellsWidth = 50;
int numOfCellsHeight = 600;
int cellSize = 20;
Pen p = new Pen(Color.Black);
for (int y = 0; y < numOfCellsHeight; ++y)
{
g.DrawLine(p, 0, y * cellSize, numOfCellsHeight * cellSize, y * cellSize);
}
for (int x = 0; x < numOfCellsWidth; ++x)
{
g.DrawLine(p, x * cellSize, 0, x * cellSize, numOfCellsHeight * cellSize);
}
}
我TableLayoutPanel中的工作前,它有一個CellPaint事件,我可以將其綁定到數組列表,以便在列表更改時單元格的顏色會發生變化。這是我有:
private void tableLayoutPanelMainGrid_CellPaint(object sender, TableLayoutCellPaintEventArgs e)
{
if (mainVisualization.mainGrid != null)
if (mainVisualization.mainGrid.cellList != null)
using (var b = new SolidBrush(mainVisualization.mainGrid.cellList[e.Column, e.Row].color))
e.Graphics.FillRectangle(b, e.CellBounds);
}
我如何結合這兩個?
你可以在你的PictureBoxPaint()方法提高自己的CellPaint事件。在創建自己的控件類時,趨於最佳工作,只需將PictureBox設置爲基類並重寫OnPaint()。還要考慮到會有很多事件處理程序調用,也許你不應該放棄選擇繪製位圖的選項。 –
如何將位圖綁定到列表?每當列表發生變化時,我都必須在picturebox中重新繪製位圖,在我的情況下,它可能會有些滯後(我正在製作一種Tetris遊戲) –