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->……
。