C ++ Builder / VCL,将图像添加到字符串网格

时间:2016-01-26 12:25:17

标签: c++ image c++builder tstringgrid

您好,所以我遇到了问题。 我正在编写一个游戏作为我的毕业设计项目而且我坚持将图像添加到 StringGrid ,这是一个2D益智游戏。

我发现我必须使用 OnDrawCell 功能, 我试图编辑它,但我不知道它应该是什么样子或它是如何工作的。

我想要的是:如果我在单元格[0] [0]中有字母“W”,我想要显示墙的图片

我感谢任何帮助。等你回答,我会谷歌直到那时。

1 个答案:

答案 0 :(得分:0)

启动时,加载包含所需墙面图片的图像。然后,在OnDrawCell事件处理程序中,检查网格的Cells值以及是否检测到W,然后Draw()网格Canvas上的该图像。它实际上并没有那么简单。

class TForm1 : public TForm
{
__published:
    TStringGrid *StringGrid1;
    void __fastcall StringGrid1DrawCell(TObject* Sender,
       int ACol, int ARow, const TRect &Rect, TGridDrawState State);
private:
    Graphics::TBitmap *WallBmp;
public:
    __fastcall TForm1(TComponent *Owner);
    __fastcall ~TForm1::TForm1();
};

__fastcall TForm1::TForm1(TComponent *Owner)
    : TForm(Owner)
{
    WallBmp = new Graphics::TBitmap;
    // fill image as needed - load a file or
    // a resource, hand draw directly on
    // WallBmp->Canvas, etc...
}

__fastcall TForm1::~TForm1()
{
    delete WallBmp;
}

void __fastcall TForm1::StringGrid1DrawCell(TObject* Sender,
    int ACol, int ARow, const TRect &Rect, TGridDrawState State)
{
    ...
    if (StringGrid1->Cells[ACol][ARow] == "W")
      StringGrid1->Canvas-Draw(WallBmp, Rect.Left, Rect.Top);
    ...
}