在C++生成器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放在窗户中间,但我看不到任何蓝色。相反,它是透明的。我在窗户的右上角看到一个蓝色的格子。

我做错了什么?

如何单独为每个单元格着色?

您在错误的Canvas上绘画

OnDrawCell事件处理程序中,this引用父Form,因为该处理程序是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);
}

相关内容

  • 没有找到相关文章

最新更新