当前位置: 首页 > 面试题库 >

调整图纸大小以匹配框架尺寸

薛博艺
2023-03-14
问题内容

我编写了一个应用程序,该应用程序基于固定像素位置自定义绘制paint()中的所有内容。然后我禁用了调整框架的大小,使其始终可见。

但是,现在我希望能够调整它的大小,但是我不想更改我的绘图代码。我希望我可以在所有绘制代码​​之后抓取Graphics
g对象的300x300正方形并将其大小调整为JFrame当前大小,但是我不知道自己在做什么。

这里是示例代码。在此,我希望将100x100正方形保留在中间,与调整后的JFrame比例:

package DrawAndScale;

import java.awt.Color;
import java.awt.Graphics;

public class DASFrame extends javax.swing.JFrame {
    public DASFrame() {
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        this.setSize(300, 300);
    }

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new DASFrame().setVisible(true);
            }
        });
    }

    @Override
    public void paint(Graphics g) {
        g.setColor(Color.BLACK);
        g.fill3DRect(100, 100, 100, 100, true);
    }
}

谢谢。


问题答案:

假设您将绘画300x300的方法重命名为paint300,请定义一个缓冲图像:

@Override public void paint(Graphics g) {
     Image bufferImage = createImage(300, 300);  // empty image
     paint300(bufferImage.getGraphics());  // fill the image
     g.drawImage(bufferImage, 0, 0, null);  // send the image to graphics device
}

以上是您要以全尺寸(300x300)绘制的时间。如果您调整窗口大小:

@Override public void paint(Graphics g) {
     Image bufferImage = createImage(300, 300);  
     paint300(bufferImage.getGraphics());
     int width = getWidth();
     int height = getHeight(); 
     CropImageFilter crop = 
         new CropImageFilter((300 - width)/2, (300 - height)/2 , width, height);
     FilteredImageSource fis = new FilteredImageSource(bufferImage, crop);
     Image croppedImage = createImage(fis);
     g.drawImage(croppedImage, 0, 0, null);
}

新类来自java.awt.image。*。

我没有测试此代码。只是为了向您指示正确的方向。



 类似资料:
  • 问题内容: 我有一个固定的宽度和高度来调整图像大小。但是,我对此有一个问题,因为图像可以具有任何类型的尺寸比(可以是 垂直 或 水平 )。在这种情况下,固定的宽度和高度会引起问题。我想以更智能的方式计算 宽度和高度 。 例如,假设我定义了 width 1024px和height 768px 。我想调整垂直图像的尺寸 (高度1100px和宽度200px) 。因此,在我的情况下,它将调整为固定 大小(

  • 我想在tkinter中创建由笔记本框架和每个选项卡内的几个框架组成的简单图形用户界面。假设我想在笔记本的每个选项卡内创建两个标记的框架,跨越100%的窗口宽度和50%的窗口高度。 屏幕布局 我将有更多的帧/元素,我想采取窗口宽度/高度的x%。 我读到tkintergui应该自动调整窗口大小时,但我不能让它工作。 如何设置帧以获取100%的窗口宽度和(例如)50%的窗口高度? 如何使框架居中,使其不

  • 我有一个尺寸为800x800的图像,其大小为170 kb。我想将此图像调整为600x600。调整大小后,我希望缩小图像大小。我该怎么做?

  • 问题内容: 下面的代码调整位图的大小并保持宽高比。我想知道是否有一种更有效的大小调整方法,因为我想到了我正在编写android API中已经可用的代码。 问题答案: 使用方法:)

  • 问题内容: 我在这里使用Go调整大小包:https://github.com/nfnt/resize 我正在从S3中提取图像,如下所示: // this gives me data []byte 之后,我需要调整图像大小: // problem is that the original_image has to be of type image.Image 将图像上传到我的S3存储桶 // pro