사용자가 스크롤하고 확대/축소하여 볼 수 있도록 수천 개의 노드가있는 그래프를 표시해야합니다. 노드는 무 차원 포인트처럼 동작해야하고, 에지는 1 차원 라인과 같이 동작해야합니다. 즉 확대하는 경우 노드를 나타내는 원이 더 멀리 떨어져 있지만 각 노드는 같은 크기로 유지되며이 둘을 연결하는 선은 길어 지지만 두껍지는 않습니다. 가능한 경우 확대/축소는 "연속"및 "무한"이어야합니다.많은 수의 점/선을 줌으로 그려 줌
이 문제를 해결하는 데 사용되는 API와 알고리즘은 무엇입니까? (예 : CAD 또는 GIS 응용 프로그램에서와 마찬가지로)
GDI +를 사용하면 성능이 거의 떨어지지 않습니다. 내 구현은 아마 순진했지만 OpenGL이나 DirectX가 필요하다고 생각합니다.
답장을 보내 주셔서 감사합니다. 화면에 표시되는 점 만 그리기로하겠습니다.하지만 사용자가 축소하면 어떻게됩니까? 나는 포인트의 수를 줄이기 위해 가까운 이웃을 단일 포인트로 대체 할 수 있다고 생각한다. 그것을 할 수있는 알고리즘이 있습니까? 그러나 여전히, 천 포인트는 쉽게 알 수있는 음모로 즉시 볼 수 있습니다. GDI가있는 많은 타원을 렌더링하는 데 상당한 지연이 없습니까? – rgf
세부 알고리즘 수준은 축소 된 장면의 복잡성을 줄이기 위해 사용됩니다. 귀하의 경우에는 줌아웃 할 때 각 포인트를 타원 대신 단일 픽셀로 렌더링하는 것처럼 간단 할 수 있습니다. 1000 포인트는 GDI +를 사용하여 신속하게 렌더링 할 수 있습니다. 장면이 변할 때만 렌더링하는 경우 (예 : 사용자가 확대/축소)이 문제는 훨씬 적습니다. 대부분의 GDI + 응용 프로그램은 Direct3D와 같이 상수 루프가 아닌 필요에 따라 (즉, Paint 이벤트에서) 렌더링됩니다. 만약 당신이 WPF 아마 상수 렌더링을해야 할 수도 있습니다 옵션. – Ash