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