Canvas 我想用C++;建设者

Canvas 我想用C++;建设者,canvas,c++builder,vcl,tpanel,Canvas,C++builder,Vcl,Tpanel,我动态地将几个TImage控件添加到TPanel,并希望在它们之间画线,但TPanel没有画布。你可以在TPaintBox上画画,但我不能在上面使用TImage微笑。告诉我如何摆脱这种简单的局面。我已经处理了这个问题 // before describing the form class in the h-file: namespace CanvasPanel { class TPanel : public Extctrls::TPanel { public:

我动态地将几个
TImage
控件添加到
TPanel
,并希望在它们之间画线,但
TPanel
没有
画布。你可以在
TPaintBox
上画画,但我不能在上面使用
TImage
微笑。告诉我如何摆脱这种简单的局面。

我已经处理了这个问题

// before describing the form class in the h-file:
namespace CanvasPanel
{
    class TPanel : public Extctrls::TPanel
    {
    public:
        __property Canvas;
    };
}
#define TPanel CanvasPanel::TPanel
 
// next - the form class, and everything is unchanged...
class TForm1 : public TForm

“TImage微笑”是什么意思?你会在图片中加入一些“笑脸”吗?也许您可以不使用
TImage
s,直接在
TPaintBox
上将这些“笑脸”绘制为位图。然后很容易在两行之间添加行。如果你想要的话,我只想使用Timage。然后将它们直接放在表单上,并在表单画布上绘制线条。可能的重复。就我个人而言,我会按照汤姆的建议去做——使用
tpaitbox
并根据需要在上面绘制位图和线条。这样做有什么不对?
#定义TPanel CanvasPanel::TPanel
应替换为
typedef CanvasPanel::TPanel TPanel,或使用TPanel=CanvasPanel::TPanel的
在C++11之后。无论如何,DFM实际上都不会实例化
CanvasPanel::TPanel
对象。让表单继续正常使用
Extctrls::TPanel
可能更容易,然后当您想要访问
CanvasPanel::TPanel*
属性时,您可以将一个`Extctrls::TPanel*`类型强制转换为
CanvasPanel::TPanel*
,例如:
((CanvasPanel::TPanel*)Panel1)->Canvas->……