|
안녕하세요...로렌조 임다...^^
제가 생각하기에는 Panel보다는 Shape를 상속 받아서 Shape에 Rectangle을 그려줘야 할 것 같네요...
Panel이 Shape의 Parent로서 동작하기 때문에 당연히 Panel을 먼저 그리고 그 위에 Shape를 그리는
걸로 보이네요...
참고하세요...
해당화 님이 쓰신 글 :
: 씨빌더 또는 파워포인트처럼 여러 객체들이 멀티섹렉트 되는 것을 구현해야 합니다.
:
: 구현은 되었는데 각 점들을 그려주는 부분이 문제입니다.
:
: 아래는 디자인 환경입니다.
:
: 흰색 바탕 : TPanel
: 큰 정사각형 : 선택될 객체들 TShape로 되었습니다.
: 작은 회색점 : Rectangle로 그려줬습니다.
: 작은검은색점 : MultiSelect된 객체들은 전체적으로 사이즈를 조절하기위해서 TShape로 만들었습니다.
:
: 선택은 잘됩니다. 그래서 그려주고 나서 탐색기나 폼싸이즈의 변경으로 판넬이 가려지게 되면
:
: Rectangle로 그린 작은 회색점들이 지워지게 됩니다.폼사이즈의 변경이나 커다란 탐색기 등으로 가려지는것은
: 폼의 FormPaint이벤트에서 다시 그려주는것으로 해결이 되었습니다.
:
: 하지만 정작 문제는 흰색바탕의 Panel보다 작은 폼이나 탐색기, 익스플로러 같은것이 그위에서만 움직이면
:
: FormPaint가 일어 나지 않기때문에 다시 그려지지 않는것입니다.
: 그래서 Panel의 WM_PAINT를 잡아서 다시 그려주게 해주었습니다. 하지만 잘그려지지가 않더군요
: 여기서 발생한 문제는 제가 WM_PAINT를 가로채서 거기서 작은 회색점을 그려주면 제가 그려주고 난후에
: 큰정사각형인 TShape가 그려지는 것입니다.
:
: 쉽게 말해서 제가 작은 점을 그려주고 난후에 그위에 TShape가 그려지는것입니다...
:
: TCustomPanel을 상속받아서 Paint함수를 오버라이드해보았지만 똑같더군요
:
: 문제를 제가 참 어렵게 설명드린듯 합니다.
:
: TPanel에 만들어진 TShape를 먼저 그려주고 그위에 나중에 제가 Rectangle를 그려줄 방법을 찾고 있습니다.
:
: 좋은 방법이 없을지요
:
:
|