Раскраска ячеек в 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 ответ
Вы рисуете на неправильном 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);
}