それに描か:グリッドでのPictureBoxに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);
}
どうすればこれらの2つを組み合わせることができますか?
あなたのPictureBoxPaint()メソッドで独自のCellPaintイベントを発生させることができます。独自のコントロールクラスを作成するときに最もうまく動作するようになるため、PictureBoxを基本クラスにしてOnPaint()をオーバーライドします。また、イベントハンドラの呼び出しがたくさんあると考えてください。ビットマップを描画するオプションを却下しないでください。 –
ビットマップをリストにバインドするにはどうすればよいですか?リストが変更されるたびにピクチャボックスのビットマップを再描画する必要があります。私の場合、おそらく遅くなるでしょう(私はテトリスのゲームを作っています)。 –