2010-03-23 1 views
0

태그가있는 객체가 서페이스 테이블에 배치되는 것을 기준으로 다양한 ScatterviewItems를 만드는 앱이 있습니다.흩어져있는 균일 분산 형 scatterViewItems

ScatterViewItems이 정보를 기반으로 ScatterView에 프로그래밍 방식으로 추가 된 것은, 내가 수를

그러나이 정보를 표시하는 좋은 일을하고 싶은 않는 DB

Scatterview에 고개를

  1. 은 테이블 전체에 고르게 분포하며

아이디어가 있습니까?

답변

0

충돌 감지가 필요합니다.

이 문제의 두 부분 인 탐지 및 해결이 있습니다. 어떤 항목의 경계가 다른 항목의 경계와 교차하는지 감지합니다. 품목이 retangular 또는 원형 인 경우에 이것은 아주 똑 바른 것이다. 다른 지오메트리를 다루는 경우 복잡해질 수 있습니다.

해결 방법은 충돌을 감지하면 수행 할 작업입니다. Google에서이 무수한 알고리즘을 찾도록 도와줍니다. stackoverflow 토론에 대한 몇 가지 링크가 있습니다 : WPF: Collision Detection with Rotated Squares, Applying Coefficient of Restitution in a collision resolution method, Best way to detect collision between sprites?.

충돌을 구현하여 항목이 분산 될 때 서로 바인딩되도록 작업 할 수 있습니다. 항목 수에 따라 항목 충돌이 너무 많아서 항목이 잘 분산되지 않을 수 있습니다. 이런 일이 발생하면 한 항목의 이동이 중지 된 충돌 감지를 실행하십시오.

0

UniformGrid?

Panel에서 상대로 자신 만의 패널을 만들 수도 있습니다. Dr. WPF ItemsControl How-To 시리즈에서 몇 가지 중요한 정보를 찾을 수 있습니다. http://drwpf.com/blog/itemscontrol-a-to-z/

반드시 읽어야 할 기간입니다.

+0

감사합니다. 참고 자료를 확인하겠습니다. 표면 표에서 항목을 쉽게 조작 할 수있는 ScatterView를 사용해야합니다. uniformGrid는 조작을 허용하지 않습니다.처음로드 할 때 ScatterViewItem이 겹치지 않도록 방지하는 방법을 알아보십시오. – ChrisCa

0

ScatterViewItem에는 프로그래밍 방식으로 항목을 배치하는 데 사용할 수있는 중심점 및 방향 속성이 있습니다. 각 항목의 크기를 알고있는 경우이 속성을 사용하여 상황에 맞는 방법으로 배치 할 수 있어야합니다. 각각의 Loaded 이벤트에 연결하고 ActualWidth/ActualHeight를 확인하면 치수를 얻을 수 있습니다. 모든 SVI에 고정 초기 크기를 사용할 수 있다면 훨씬 쉽습니다.

간단한 그리드 (더 자연스럽게 보이도록 임의성을 더함)를 계산하여 배치하거나 "강제 지시 레이아웃"을 찾고있을 수 있습니다.이 레이아웃은 각 객체에 그것의 치수. 잠시 후 요소들은 자연스럽게 서로 균등하게 배치되지만, 공간이 부족한 경우에도 겹칠 수 있습니다. WPF 예제를 보지 못했지만 flare.prefused.org/demo (layout> force)를 보면 플래시에서 무슨 의미인지 알 수 있습니다.