gpt4 book ai didi

Java Applet 包装器规模输出

转载 作者:行者123 更新时间:2023-12-02 05:34:16 25 4
gpt4 key购买 nike

我正在为 Notch 的“Prelude of the Chambered”创建一个包装,我希望制作它以便您可以调整窗口大小。我不知道如何使内容缩放,我尝试覆盖 onPaint。我无法修改 Jar 来完成此任务。

onPaint 尝试:

package com.gudenau.pc.poc;

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.image.BufferedImage;

import javax.swing.JFrame;

public class JScaledFrame extends JFrame {

private static final long serialVersionUID = 4044340683411982494L;

public JScaledFrame(String title) {
super(title);
}

@Override
public void paint(Graphics graphics){
Dimension min = getMinimumSize();
Dimension size = getSize();

BufferedImage image = new BufferedImage(min.width, min.height, BufferedImage.TYPE_4BYTE_ABGR);
Graphics subGraphics = image.getGraphics();
super.paint(subGraphics);
subGraphics.dispose();

graphics.drawImage(image, 0, 0, size.width, size.height, null);
}
}

最佳答案

扩展内容非常困难。您想要的是更改绘制底层组件的 Graphics 上下文的缩放上下文。

通常,您要做的就是覆盖有问题的组件的 paint 方法并应用您想要的缩放因子...

public class MyExtendedClass extends ... {
@Override
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D)g.create();
double scaleFactor = 1d;
// Calculate the scaling factor to apply
// based on the "default" size and the
// current size...
g2d.scale(scaleFactor, scaleFactor);
super.paint(g2d);
g2d.dispose();
}
}

这可能会引入各种怪异现象,坦率地说,更强大的解决方案可能是使用 JXLayer/JLayer,例如......

您可能还会发现使用 AffineTransform 更容易...

关于Java Applet 包装器规模输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25172113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com