1
자바에서 도형의 크기를 조절하려고했지만 몇 가지 문제가 있습니다. 내가 그것을 시도 할 때 모양이 단순 dissapears ...이 방법은 2 점을받습니다, toScale 내가 모양을 확장하려면 원하는 지점이며, p1 내가 선택한 모양 주위에있는 사각형을 클릭 한 지점입니다 (거기에 모양을 둘러싼 사각형 (BoundingBox의)는 처리 여부 POLYGONE 또는 사각형하거나 폴리 라인)메서드 규모가 작동하지 않습니다. 무엇이 문제입니까?
여기 스케일 방법 코드입니다입니다 : 어떤 도움이 사전에 감사 감사하겠습니다
public void scale(Point toScale, Point p1) {
Graphics g = parent.getGraphics();
int distanceToClicked = 0;
int distanceToBoundingBox = 0;
int scaleFactor = 0;
Vector<Point> pointsAux = new Vector<Point>();
Iterator<Point> it = points.iterator();
while (it.hasNext()){
Point p = it.next();
distanceToClicked = (int) Math.sqrt(Math.pow(getCentroid().getX()-p1.getX(), 2)+Math.pow(getCentroid().getY()-p1.getY(),2));
distanceToBoundingBox = (int) Math.sqrt(Math.pow(getCentroid().getX()-toScale.getX(),2)+Math.pow(getCentroid().getY()-toScale.getY(),2));
scaleFactor = distanceToClicked/distanceToBoundingBox;
p = new Point((int)p.getX()*scaleFactor,(int) p.getY()*scaleFactor);
pointsAux.add(p);
}
points.clear();
points.addAll(pointsAux);
}
public Point getCentroid(){
int sumx = 0;
int sumy = 0;
for(int i = 0; i<points.size();i++){
sumx+=points.get(i).getX();
sumy+=points.get(i).getY();
}
Point centroid = new Point(sumx/points.size(), sumy/points.size());
return centroid;
}
가, 결국 나는 ' 오해의 코드에 대해 미안합니다
단일 스레드 시나리오에서 벡터 수집을 사용하지 마십시오. ArrayList를 사용하십시오. – sturcotte06
어떤 방식으로 작동하지 않습니까? 지금까지 작동 시키려고 시도한 것은 무엇입니까? – pquest
왜 @ sturcotte06입니까? – pMpC