2010-02-11 5 views
0

저는 여전히 플로어 플래 인을 그리려고합니다 (BCB 6에서).VCL - 방 그리기

이미 몇 가지 질문을했습니다. Seeking floorplan design VCL toolbar의 결과로 TMC 구성 요소를 구입했습니다.

Looking for non-rectangular panel VCL component 나는 가까이에 있지만 꽤있다.

그래서 ... 다시 해보자 패널의


일종의 것 같아요. 멋진 두꺼운 테두리 선 (벽)이 가장자리 주위에 있습니다. 어쩌면 5 픽셀 또는 10 픽셀이기 때문에 기본 패널에서는 그렇지 않습니다.

양식을 사용하여 크기를 조정해야하므로 개별적으로 선을 그릴 수 없습니다. 그래서, 나는 패널 (소유자 속성)에 줄을 묶고 다시 그려야합니다. (언제 폼 크기 조정?, 패널 크기 조정)

또는 직접 패널 구성 요소를 만들 수 있습니다.

어느 경우이든 문을 열 수있는 선을 방해 할 수 있어야합니까? 문 구성 요소를 추가해야합니까? 하지만 폼 크기를 조정할 경우 패널에 연결해야합니다.

구현하는 가장 좋은 방법은 무엇입니까? 그것은 될 필요가 없습니다 너무 공상하지만,이 같은 ...

============================================= 
|    ||  ||     | 
|    ||  ||     | 
|    ||  ||     | 
|    ||  ||     | 
=== ============= ============= ====== 
|    ||       | 
|           | 
|    ||       | 
============================================= 

보기? 여러 개의 문도있다. 바람직하게는 비 직사각형 형태 (적어도 L 자형)의 방이며 형태로 크기 조절이 가능합니다.

아이디어가 있으십니까?

+1

TMS 다이어 그래밍 스튜디오를 사용할 때 어떤 문제가 있습니까? –

+0

패널로 크기를 조정하는 tpanel 주위에 무거운 선을 긋는 방법 (벽을 나타 내기 위해)을 어떻게 보지 못합니까? 문을 나타 내기 위해 그들 사이에 간격을 두는 방법을 나는 알지 못한다. 그리고 저는 심지어 L 자 모양의 방을 생각하고 싶지도 않습니다. 물론, 어쩌면 단지 열심히 노력하지 않았을 수도 있습니다 ... 사실 할 수 있다는 말인가요? 그걸 알고 좋은 것입니다. – Mawg

답변

2

이 솔루션이 시나리오에 맞는 솔루션인지는 모르겠지만 비슷한 애플리케이션을 설계한다면 VCL 프레임 워크에서 새로운 구성 요소로 쉽게 확장 할 수 있다고 생각합니다. 나는 다양한 그래픽 요소, 문, 벽 등에 대한 컴포넌트를 만들 것이다. 나는 그들이 상속받을 수있는 공통 객체를 만들 것이다.

는 예를 들어 내가 TControl에 의해 주어진 Anchor 특성을 활용 TGraphicControl에서 TFloorplanElement 상속을 할 것, 내 모든 그래픽 구성 요소에서 상속 할 수있는 TFloorplanElement 구성 요소를 만드는 것, 그리고 CanvasTGraphicControl에 의해 제공. 나는 이것을 위해 사용자 정의 TPanel을 사용하지 않겠다. 여기서는 TWinControl이 제공하는 윈도우 핸들 오버 헤드가 필요 없다고 생각한다.

벽의 경우 벽을 연결하는 두 개의 끝 점이있는 TFloorplanElement에서 상속하는 구성 요소를 만들려고합니다. 한 쪽면의 문과 다른 쪽면의 벽 또는 TFloorplanElement의 다른 조합 일 수 있습니다. 자손. 이 모서리 중 하나가 움직이면 어떤 사건 처리가 필요합니다.이 경우에는 꼭 벽의 좌표를 모퉁이 요소의 좌표로 재조정해야합니다. 당신은 폼 크기 조정의 문제를 해결할 수

한 가지 방법은, 내가 그는 다이어 그래밍 스튜디오가 무엇을하고 있는지 추측하지만 컨테이너 구성 요소 (예를 들어 TFloorplanContainer)를 만들 경우 당신의 TFloorplanElement 구성 요소에 대한 컨테이너 컨트롤을 사용하는 것입니다 백분율로 표시되는 요소의 위치를 ​​지정하거나 컨테이너의 크기를 조정할 때 조정 된 배율 인수를 가질 수 있습니다. 컨테이너는 앵커 속성을 자체 컨테이너의 테두리 (즉, 양식)에 바인딩하는 데 사용됩니다.

컨테이너 크기를 조정할 때마다 포함 된 요소를 다시 그립니다. 제가 처음부터 말했듯이, 이것이 당신이나 당신이 사용하는 다이어 그래밍 스튜디오와 함께 할 수있는 솔루션인지는 확실하지 않지만, 제가 당신 자리에 있다면, 제가 생각할 수있는 하나의 접근법입니다.

+0

+1 대략 내가 생각하고있는 것. 그러나 게으른 사람의 해결책이 있습니까? – Mawg

+0

답장을 보내 주셔서 대단히 감사합니다. – Mawg

2

TSimpleGraph를 살펴보면 큰 도움이 될 것입니다. 다음 위치에 있습니다 : http://www.delphiarea.com/products/delphi-components/simplegraph/

이벤트 핸들러를위한 다양한 메소드, 속성 및 장소가 포함 된 패널을 제공하는 무료 구성 요소이며 그 효과는 꽤 화려합니다. 그들은 가능성의 일부를 보여주는 좋은 exe 데모를 제공합니다. 그들은 다양한 모양과 선을위한 오브젝트를 정의했지만 어떤 작업을하면 벽과 같은 주식을 추가 할 수 있다고 생각합니다.

효과가 있다면 TSimpleGraph는 멋진 주택을 제공 할 것입니다. 앱의 고기.

+0

나는 이걸 7 년 전에 어떻게 놓쳤는 지 모르지만, 지금 당장 그것에 대해 조사 할 것입니다. 그것은 웹 사이트의 첫 번째 모습에서 매우 유망 해 보입니다. 코드에 깊이 파고 쓸 수 있는지 보겠습니다. – Mawg

관련 문제