在C ++构建器StringGrid

时间:2018-11-21 20:04:19

标签: c++ c++builder stringgrid

我试图这样做:

void __fastcall TTetrisGame::DrawGrid1DrawCell(TObject *Sender, int ACol, int ARow,
    TRect &Rect, TGridDrawState State)
{
    this->Canvas->Brush->Color=clBlue;
    this->Canvas->FillRect(Rect);
}

但这是一个非常奇怪的结果。我将StringGrid放在窗口的中间,但看不到任何蓝色。相反,它是透明的。我在窗口的右上角看到一个彩色的蓝色网格。

我在做什么错了?

如何为每个单元格分别上色?

1 个答案:

答案 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);
}