2010-02-10 1 views
6

Qt/C++을 사용하여 크고 복잡한 QGraphicsScene을 그려 봅니다. 많은 오브젝트를 추가하면 패닝 및 확대/축소가 불쾌하게 느려집니다. (당연히 여기에서 놀람 없음). 필자는 장치 좌표 캐싱 (한 지점으로 이동하는 데 도움이 됨) 및 최소한의 뷰포트 업데이트 등을 수행했지만 결과적으로 너무 많은 개체가 있습니다. 내가 뭘하고 싶은 건 어떻게 든 UI를 제어에서 비동기 적으로 항목을 그립니다. 즉, Google지도와 마찬가지로 화면 이동 및 확대/축소를 원하고 최대한 빨리 따라 잡기를 원하지만 항목이 그리기를 끝내기 전에 다시 이동할 수 있어야합니다.Qt에서 Google지도와 같은 타일 스크롤을 구현하려면 어떻게해야합니까?

내가 시도하는 한 가지 방법은 두 개의 QGraphicsScenes를 만드는 것입니다. 하나는 실제 개체를 가지고 있지만 QGraphicsView에는 연결되어 있지 않습니다. 다른 QGraphicsScene은 QGraphicsView에 연결되어 있지만 화면을 덮을 수있는 크기의 QPixmap이 있습니다. 계획은 예비 CPU주기를 사용하여 필요한 모든 타일 pixmap을 업데이트하는 것입니다. 이것은 렌더링에 필요한 컨트롤을 제공하는 것처럼 보입니다 (따라서 전체 보이는 장면을 다시 렌더링하는 동안 차단할 필요가 없습니다). 생각? 누구든지 이것을 구현 했습니까?

답변

3

여기를보세요 : Generating content in threads.

당신이하려는 것과 비슷합니다. 타일 ​​메커니즘은 많은 양의 데이터를로드하는 매우 일반적인 방법입니다. 게시 된 링크 외에도 QGraphicsView을 사용한 간단한 예를 보지 못했습니다.

40000 Chips 또한 대용량 데이터 관리에 대한 몇 가지 사항을 보여줍니다.

+0

나는 "40000 Chips"를 보았다.이 예제에 대한 나의 이해는 각 칩의 QGraphicsScene에 하나의 항목 만 있지만 " 칩이 줌이 다양한 임계 값을 초과하면 추가 세부 정보를 그립니다. 제공하신 링크는 매우 관련있는 것 같습니다. 내가 기회를 얻 자마자 자세히 시도해 볼께 ... 고마워! –