스퀘어 위에 그리드를 그려야하는 스윙을 사용하여 Java 응용 프로그램을 작성했습니다. 이렇게하려면 Graphics
클래스에서 제공하는 drawLine(...)
메서드를 사용하고 있습니다.Java Swing : drawLine very slow
모든 작업은 각 행을 그리는 데 많은 시간이 필요하다는 점을 제외하고는 모두 잘 작동합니다 (50 줄의 경우 20 초 이상 ...). 실시간으로 그려지는 선들도 볼 수 있습니다. 하나의 이상한 것은 수평선이 수직선보다 빨리 그려진다는 것입니다 (거의 즉시).
나는 뭔가 잘못하고있을 수도 있습니다. 여기 그리드에 대한 코드가 있습니다.
public void drawGrid(Graphics g){
g.setColor(new Color(255, 255, 255, 20));
int width = getWidth();
int height = (int) (width * Utils.PLATE_RATIO);
int step = pixelSize*gridSpacing;
Color bright = new Color(255, 255, 255, 100);
Color transparent = new Color(255, 255, 255, 20);
for(int ix = insets.left + step;
ix < width; ix += step){
if(((ix - insets.left)/step) % 10 == 0){
g.setColor(bright);
}
else{
g.setColor(transparent);
}
g.drawLine(ix, insets.top, ix, height+insets.top);
}
for(int iy = insets.top+step;
iy < (insets.top + height); iy += step){
if(((iy - insets.top)/step) % 10 == 0){
g.setColor(bright);
}
else{
g.setColor(transparent);
}
g.drawLine(insets.left, iy, width + insets.left, iy);
}
}
이중 버퍼링을 사용하지 않기 때문입니다. http://docs.oracle.com/javase/tutorial/extra/fullscreen/doublebuf.html –
을 참조하십시오. 물론, 어떻게 그렇게 어리 석을 수 있습니까? 고맙습니다 ! – Nicolas
@SureshKumar 스윙 구성 요소는 기본적으로 더블 버퍼링입니다 ... – kleopatra