TPanel 은 Canvas 가 없는 컴포넌트입니다.
가끔 패널에 그림을 그려야 할 경우 조금 난감합니다.
결국 이미지 컴포넌트를 위에 올리는 방법을 쓰는 경우가 대부분 일 것입니다.
하지만 원래 캔버스가 없던 것은 아니었습니다.
TPanel 컴포는 TCustomPanel 을 상속 받았는데 TCustomPanel 도 캔버스가 없습니다.
하지만 TCustomPanel 이 TWinControl을 상속 받았는데 여기에는 Canvas 가 있습니다.
그래서 그것을 사용할 수 있도록 하려면 TPanel을 상속받아 클래스를 하나 만들면서
Canvas 프로퍼티를 활성화 시켜주면 됩니다.
아래에 TCanvasPanel 이 그것입니다.
이것을 컴포넌트로 등록시켜 놓고 사용해도 되고..
아래처럼 그냥 패널 클래스로 캐스팅해서 사용해도 됩니다.
그것 각자 알아서 하시기를..
이 팁은 TWinControl 후손 중에서 캔버스가 없는 컴포에 캔버스를 갖게 하는 방법이기도 합니다.
//---------------------------------------------------------------------------
// 캔버스를 가진 패널 클래스.
class TCanvasPanel : public TPanel
{
public:
__property Canvas;
};
//---------------------------------------------------------------------------
// 일반 Panel1 에 사각형을 그리는 예제.
void __fastcall TForm1::Button4Click(TObject *Sender)
{
TCanvasPanel *pCanvasPanel = (TCanvasPanel *)Panel1;
pCanvasPanel->Canvas->Rectangle(1,1,101,101);
}
//---------------------------------------------------------------------------
|
이렇게 하는게 정석이지만 에러의 가능성이 없고 관계가 명확할 때는
간편한 캐스팅을 하는 관계로.. ㅡ..ㅡ;