我写了一个 gui,用户在 (640x480) 窗口中绘制了一些东西。它使该绘图成为存储在 Vector 数组中的一组点。现在,我如何将这些点集转换为原点(窗口左上角的 0,0)或将其放在指定的位置?我想要的窗口的宽度和高度也是640x480。
解决之后,如何将新的点集缩放到我想要的大小?
更新 1
我解决了规模问题,但没有解决定位问题。这幅画没有去我告诉它的地方。下面是我到目前为止所拥有的代码。
float scaleX = (float)width/boundingPoints.width;
float scaleY = (float)height/boundingPoints.height;
for(int i = 0; i < cg_points.size()-1; i++){
Point p1 = cg_points.get(i);
Point p2 = cg_points.get(i+1);
g.drawLine((int)(p1.x*scaleX) + pos.x, (int)(p1.y*scaleY) + pos.y, (int)(p2.x*scaleX) + pos.x, (int)(p2.y*scaleY) + pos.y);
}
我希望绘图从 pos [x, y] 所在的位置开始。目前的问题是这个。它确实遵循 pos.x 和 pos.y 的做法,但它离我们很远,并且不是从 pos[x,y] 开始的。
这是该问题的屏幕截图
正如您从图片中看到的那样,盒子应该是星星所在的位置。如您所见,缩放是正确的,而不是位置。那是因为绘图中的点可能不是从 (0,0) 开始的。
有什么建议么?
谢谢!