그래픽 프로그래밍을 처음 사용합니다. 당신이 방향 그래프를 그릴 수있는 프로그램을 만들려고합니다. 처음에는 노드를 표현하는 사각형 세트를 그려 냈으며 Java에서 paint 메소드를 오버라이드하여 팬 및 확대/축소 기능을 만들었습니다.도트 그리기
너무 많은 노드가있는 동안이 모든 것이 합리적으로 잘 작동하는 것 같습니다. 제 문제는 도트 그리드를 그릴 때입니다.
int iPanX = (int) panX;
int iPanY = (int) panY;
int a = this.figure.getWidth() - iPanX;
int b = this.figure.getHeight() - (int) iPanY;
for (int i = -iPanX; i < a; i += 10) {
for (int j = -iPanY; j < b; j += 10) {
g.drawLine(i, j, i, j);
}
}
이 날 그리드를 이동하지만 확대하지 않을 수 있습니다 : 나는 루프 두 개의 중첩을 사용하여 도트 그리드 오버레이가 처음에 테스트 코드의 간단한 비트를 사용했다. 그러나 패닝 할 때의 성능은 끔찍합니다! 나는 많은 검색을했으나 주제에 대해 아무 것도 찾을 수 없기 때문에 명백한 것을 놓치고 있어야한다고 생각합니다.
어떤 도움이나 조언이라도 대단히 감사하겠습니다.
--Stephen
덕분 성능이 대규모 증가! 철저히 단련해야 할 몇 가지 단점이 있지만 전반적으로 개선되었습니다. 확대 축소를 위해 제공되는 솔루션은 그리드 크기를 증가시켜 단일 픽셀로 유지하려는 경우 이상적이지 않습니다. 조정할 수있는 눈금 img을 업데이트합니까? – SRoe
예, 나중에 저에게 일어났습니다. 확대/축소가 얼마나 자주 변경 될지에 따라 다릅니다. 모든 확대/축소 변경으로 그리드 이미지를 업데이트해야한다고 생각합니다. 그리고 페인트 (g)에서 그리드를 1 : 1 줌으로 그릴 수 있고 그리기 위해 나머지 오브젝트의 배율을 설정할 수 있습니다. 나는 내 대답에서 그것을 업데이트 할 것이라고 생각한다. – Stroboskop