我试图这样做:
void __fastcall TTetrisGame::DrawGrid1DrawCell(TObject *Sender, int ACol, int ARow,
TRect &Rect, TGridDrawState State)
{
this->Canvas->Brush->Color=clBlue;
this->Canvas->FillRect(Rect);
}
但这是一个非常奇怪的结果。我将StringGrid放在窗口的中间,但看不到任何蓝色。相反,它是透明的。我在窗口的右上角看到一个彩色的蓝色网格。
我在做什么错了?
如何为每个单元格分别上色?
答案 0 :(得分:1)
Canvas
上绘画。在OnDrawCell
事件处理程序中,this
引用父窗体,因为该处理程序是TTetrisGame
类的成员。因此,您正在窗体的Canvas
上绘画。您需要改为在网格的Canvas
上绘制:
void __fastcall TTetrisGame::DrawGrid1DrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State)
{
DrawGrid1->Canvas->Brush->Color=clBlue;
DrawGrid1->Canvas->FillRect(Rect);
}