刚进入Jdialog的时候有一个圆,它是g2.setColor(new Color(196,196,196));g2.fillOval(0, 0, (int)width, (int)height);这样画的,这个只是背景圆,现在的问题是,我每次的WIDTH,HEIGHT都不一样,我想让g2.fillOval(0, 0, (int)width, (int)height);在原来的基础上按中心缩放,如何实现?????

解决方案 »

  1.   

    如果是Applet,可以获取Applet的宽度和高度来定位该圆 this.getWidth()/2
     this.getHeight()/2
      

  2.   


    坐标 x/2, y/2
    大小 w/2, y/2
      

  3.   

    你想实现什么样的效果?是在改变JDialog大小的时候里面的圆也跟着变吗?
      

  4.   

    本人刚做了一个缩放图片的的项目。/**
     * 缩放原始图片到合适大小.
     * @param srcImage  原始图片
     * @param fixedWidth 规定的宽度
     * @param fixedHeight 规定的高度
     * @return BufferedImage - 处理后的图片
     */
    public static BufferedImage zoomImage(BufferedImage srcImage ,int fixedWidth,int fixedHeight){
    int MAX_WIDTH = fixedWidth;// TODO: 缩放后的图片最大宽度
    int MAX_HEIGHT = fixedHeight;// TODO: 缩放后的图片最大高度
    int imageWidth = srcImage.getWidth(null); // 800
    int imageHeight = srcImage.getHeight(null);  // 600 int thumbWidth = MAX_WIDTH;
    int thumbHeight = MAX_HEIGHT;
    double thumbRatio = (double)thumbWidth / (double)thumbHeight; //  1 :  图片的比率
    double imageRatio = (double)imageWidth / (double)imageHeight; // 8/6
    if (thumbRatio < imageRatio) {
    thumbHeight = (int)(thumbWidth / imageRatio);
    } else {
    thumbWidth = (int)(thumbHeight * imageRatio);
    }
    // 如果图片小于所略图大小, 不作处理
    if(imageWidth < MAX_WIDTH && imageHeight < MAX_HEIGHT) {
    thumbWidth = imageWidth;
    thumbHeight = imageHeight;
    }  BufferedImage thumbImage = new BufferedImage(thumbWidth, 
    thumbHeight, BufferedImage.TYPE_INT_RGB);
    Graphics2D graphics2D = thumbImage.createGraphics();
    graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
    RenderingHints.VALUE_INTERPOLATION_BILINEAR);
    graphics2D.drawImage(srcImage, 0, 0, thumbWidth, thumbHeight, null);
    System.out.println("thumbWidth=" + thumbWidth);
    System.out.println("thumbHeight=" + thumbHeight);
    return thumbImage;
    }