我想在全局范围内声明一个TBitmap。
我尝试如下:
在方法中本地运行,
std::auto_ptr<Graphics::TBitmap> RenderGraphic(new Graphics::TBitmap());
OR
Graphics::TBitmap * RenderGraphic = new Graphics::TBitmap;
所以要全局声明它,我在头文件中尝试过
Graphics::TBitmap *RenderGraphic;
这在构造函数中
__fastcall TShipGraphic::TShipGraphic(TComponent* Owner)
: TForm(Owner)
{
Graphics::TBitmap * RenderGraphic = new Graphics::TBitmap;
}
编译正常,但在运行时会在首次出现
时引发访问冲突异常 RenderGraphic->Canvas->Pen->Color = clBlack;
请提前告知。
我使用的参考来源是C++ Builder Graphics Introduction
建议在构造函数中声明
答案 0 :(得分:0)
您需要实现一个单例。考虑只读情况(位图仅创建一次,没有设置函数)。
在MyGraphics.h中定义访问器功能
#include <vcl.h>
TBitmap* GetRenderGraphic();
MyGraphics.cpp中的实现
static std::unique_ptr<TBitmap> renderGraphic(new TBitmap());
TBitmap* GetRenderGraphic()
{
return renderGraphic.get();
}
使用它(必须包含MyGraphics.h)
GetRenderGraphic()->Canvas->Pen->Color = clBlack;