ユーザーが (640x480) ウィンドウに何かを描画する GUI を作成しました。その描画を 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) から始まらない可能性があるためです。
助言がありますか?
ありがとう!