두 점에서 선을 그려야하고 지금까지 내가 수행 한 작업은 drawLine(x1,y1,x2,y2)
입니다. 그러나 내가하고자하는 것은이 두 점 (x1,y1)
과 (x2,y2)
과 교차하는 선을 그리는 것입니다.java의 그래픽 클래스로 직선 그리기
3
A
답변
3
일부 mathematik을 사용할 수
난 그냥 그들 사이에 선을 그릴 하지 않으려는, 여기에 내가 가지고있는 이미지와 제가하고 싶은입니다. 당신의 선의 증가를 얻으십시오. 함수를 알아야합니다.
f (x) = mx + b. 이미 가지고있는 두 점을 사용하여 프레임의 테두리에서 두 개의 다른 점을 계산하고 두 점 사이에 선을 그립니다.
1
선이 자신의 경계를 만나는 좌표를 계산해야합니다 그래픽 컨텍스트.
(x1, y1) 및 (x2, y2)가있는 경우 x_a 및 y_a가 (x_a, 0) 및 (0, y_a)가되도록 계산하십시오. x_a = 0이면 선은 왼쪽 가장자리부터 시작합니다. y_a = 0이면, 선은 상단 모서리부터 시작합니다.
줄의 오른쪽/오른쪽 줄에 대해 반복하십시오.
0
Bresenham의 라인 알고리즘
private int sign (int x) {
return (x > 0) ? 1 : (x < 0) ? -1 : 0;
}
public void drawBresenhamLine (int xstart, int ystart, int xend, int yend, Graphics g){
int x, y, dx, dy, incx, incy, pdx, pdy, es, el, err;
dx = xend - xstart;
dy = yend - ystart;
incx = sign(dx);
incy = sign(dy);
if (dx < 0) dx = -dx;
if (dy < 0) dy = -dy;
if (dx > dy){
pdx = incx; pdy = 0;
es = dy; el = dx;
} else {
pdx = 0; pdy = incy;
es = dx; el = dy;
}
x = xstart;
y = ystart;
err = el/2;
g.drawLine (x, y, x, y);
for (int t = 0; t < el; t++)//if I multiply el a line will be longer
{
err -= es;
if (err < 0) {
err += el;
x += incx;
y += incy;
} else {
x += pdx;
y += pdy;
}
g.drawLine (x, y, x, y);
}
}
관련 문제
- 1. iPhone에서 손가락으로 직선 그리기
- 2. 직선 그리기 iOS
- 3. 곡선을 평균화하는 직선 그리기
- 4. 그래픽 클래스로 그린 Flash 그래픽 배치 문제
- 5. Java의 Quadtree 그래픽 디스플레이
- 6. Java의 그래픽 클래스
- 7. JPanel에 벡터 그래픽 그리기
- 8. 그래픽 히스토그램 그리기
- 9. iphone에 벡터 그래픽 그리기
- 10. JButton 위에 그래픽 그리기
- 11. JSF로 그래픽 구조 그리기
- 12. ExtJs에서 그래픽 그리기
- 13. MIT 스키마로 그래픽 그리기
- 14. URL은 Java의 URL 클래스로 끝나야합니까?
- 15. Java의 다중 플랫폼 2D 그래픽
- 16. 구성 요소 아래에 그래픽 그리기
- 17. Visual C++로 그래픽 그리기
- 18. 캔버스에 Android 그래픽 그리기 질문
- 19. 코어 그래픽 - 각도로 선 그리기
- 20. C# 그래픽 경로 그리기 문제
- 21. QWidget에 픽셀 기반 그래픽 그리기
- 22. C# 그래픽 모든 개체 그리기
- 23. Java의 벡터 그래픽 성능은 Flash와 어떤 차이가 있습니까?
- 24. Java의 threadsafe 이중 버퍼 캐시 (그래픽 제외)?
- 25. Windows Phone에서 그리는 방법 (Java의 그래픽 대체)
- 26. 코어 그래픽 : 일반 그래디언트가있는 패스 그리기
- 27. 보이지 않는 컨트롤을 그래픽 개체 위에 그리기
- 28. Windows Forms을 사용하지 않고 C# 그래픽 그리기
- 29. 비트 맵로드 또는 그래픽 그리기? 성능 질문
- 30. 그래픽 - DrawLine - 선 그리기 및 이동
네는 바로 먹으 렴하지만 이미 존재하는 기능을 찾을 수 있다면 .. 좋을하지만 내가 아무것도 발견하지 말자 경우 내가 사용하는 것입니다 무엇을, 감사합니다 것 다른 해결책 :) – Ben
난 그냥이 질문을 발견;) http://stackoverflow.com/questions/12286687/draw-an-infinite-line-through-2-points – SomeJavaGuy