저는 이전에 acm 그래픽 라이브러리를 꽤 많이 사용 했었고 스탠포드가 할당 한 브레이크 아웃 문제에 대한 작업을 시작했습니다. 과거에 그래픽으로 여러 번 보았던 문제 중 하나는 좌표를 실제로 두 번 및 세 번 체크했는데 실제로 표시되는 위치를 정확히 반영하지 않는다는 것입니다. 결국, 과제를 위해 나는 그것을 눈으로보고 끝내기까지 수정을가했습니다. 그래서 명백한 나는 여기에 뭔가를 놓치고있어 간단한 그래픽 프로그램이 어렵지 않아야합니다.기본 자바 그래픽 및 좌표가 제대로 작동하지 않습니다.
예를 들어, acm.graphics를 사용하면 내 코드가 다음과 같이 보입니다.
public static final int APPLICATION_WIDTH = 400;
public static final int APPLICATION_HEIGHT = 600;
public void setupBorder(){
// **Sets Black Background
GRect b = new GRect(0,0,400,600); //** Sets Black Background
fillObj(b,Color.black);
add(b);
//**Sets White Square so border is 5 pixels wide on each side
b = new GRect(5,5,APPLICATION_WIDTH-10,APPLICATION_HEIGHT-10);
fillObj(b,Color.white);
add(b);
}
그래서 여기 내 생각은, 아래로 나는 사람들을 뺄하고 추가 5 개 픽셀 (기본 2B + X = 1 측의 각 측면에 테두리를 5 개 픽셀을 가질 필요가 자사의 이동 권리 5 개 픽셀 5 픽셀입니다 , 2a + y = 수직면). 중간에 흰색 사각형이있는 각면에 5 픽셀의 검은 경계선이 생기는 것 같지만 그렇지 않습니다. 창의 왼쪽, 오른쪽 및 위쪽에 테두리를 만들고 아래쪽에는 테두리를 만들지 않습니다. 그래서이 간단한 것을 무언가 잘못했을 수 있습니까? 나는 두 배, 세 배, 심지어 종이에 계산을 확인하고 그것이 5 픽셀의 검은 색 테두리가있는 가운데에 흰색 사각형이어야한다고했지만, 그렇지 않습니다. 나는 더 나쁜 효과와 함께, 백분율을위한 변화하는 픽셀을 시도했다. 수동으로 상자를 편집 할 때까지는 Y 값의 -35가 너무 가깝지만 조금 멀리 보입니다. 누구나 무슨 일이 벌어지는 지 아이디어가 있습니까?
appwindow http://i46.tinypic.com/10rob61.jpg이 실행 변경 및 클래스 내에서 다른 방법으로
.public void run() {
/* You fill this in, along with any subsidiary methods */
init();
}
public void init(){
setupBorder();
}
public void setupBorder(){
//**Black Background
GRect b = new GRect(0,0,400,600); //**Black Background
fillObj(b,Color.black);
add(b);
b = new GRect(5,5,APPLICATION_WIDTH-10,APPLICATION_HEIGHT-10);
fillObj(b,Color.white);
add(b);
}
public void fillObj(GFillable a, Color argC)
{
a.setFillColor(argC);
a.setFilled(true);
}
아마도'APPLICATION_HEIGHT' 메뉴를 포함? –
Jan Dvorak이 뭔가있을 수 있습니다 ... (0, 0)이 메뉴의 왼쪽 상단에있을 수 있습니다. 그러나이 경우 (5, 5)는 그보다 높을 것입니다. 이상한 ... –
디버그 단일 getHeight/getWidth에 추가 될 수도 있고 콘솔에 각각 2 개의 값이 반환됩니다. 645 418 575 400. 그것은 단지 사납다. – Lorek