我有幾個幾何形狀,這些幾何形狀位於不同的座標中,我想將其置於面板的中心。我寫了一個名爲「Set Scale」的函數,它將它放入中心,但形狀相反。由AffineTransform修改的形狀與預期相反呈現
我的代碼:
private void SetScale1(Graphics2D gr, int gr_width , int gr_height, double left_x , double right_x , double top_y , double bottom_y){
Rectangle2D drawing_rect = new Rectangle2D.Double(left_x, top_y, right_x - left_x, bottom_y - top_y);
double drawing_cx=(left_x+ right_x)/2;
double drawing_cy =(top_y + bottom_y)/2;
AffineTransform at = AffineTransform.getTranslateInstance(-1 * drawing_cx, -1 * drawing_cy);
//gr.translate(-1 * drawing_cx, -1 * drawing_cy);
//gr.TranslateTransform(0, 0)
double scale_x=gr_width/drawing_rect.getWidth();
double scale_y=gr_height/Math.abs(drawing_rect.getHeight());
scale_x = Math.min(scale_x, scale_y);
scale_y = scale_x;
scale_x = Math.abs(scale_x);
// at = AffineTransform.getScaleInstance(scale_x, -1 * scale_y);
//gr.transform(tt);
gr.transform(at);
//' Translate to center over the drawing area.
double graphics_cx =gr_width/2;
double graphics_cy = gr_height/2;
gr.translate(graphics_cx, graphics_cy);
}
我剛纔試着手動添加+400到Ypoints。有效 – user2138389 2013-03-07 08:07:48