我一直在为另一个问题找到答案,并遇到了一个我以前从未见过的奇怪问题......
基本上,程序使用a AffineTransform来提供Graphics元素的翻译,缩放和旋转,简单的东西,之前完成了一千次
问题是,当屏幕第一次出现时,输出不是它应该的位置,但是一旦我触摸其中一个控件(调整其中一个幻灯片),它就会跳到正确的位置.


根据屏幕截图,Graphics内容似乎被其他控件的数量错位.
如果我从GUI中删除控件,它将出现在正确的位置(位于中心).如果我调整窗口的大小,它并没有解决这个问题,它只有当滑块之一触发修复repaint的DrawPane...
我已经在输出中添加了诊断信息,并且所有值都相同 - 也就是说,它们在程序首次启动时以及将所有滑块值调整为初始值时打印相同的值.
如果我从中删除setRotation和setScale调用AffineTransform,它不会修复它.如果我删除了setTranslation,则在面板更新之前,方块最初不会被绘制(它在屏幕外绘制)
如果我使用Graphics2D g2d = (Graphics)g;而不是g.create()相同的结果(是的,我在paintComponent退出方法之前重置转换;))
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.geom.AffineTransform;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class Parker {
public static void …Run Code Online (Sandbox Code Playgroud) 我有一个带有x和y轴的2d图,我试图围绕轴旋转一个形状(一系列点).此旋转需要包括缩放功能.
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import javax.swing.*;
import java.lang.reflect.Array;
public class test extends JPanel implements ActionListener {
int[] p1x = {200, 200, 240, 240, 220, 220, 200};
int[] p1y = {200, 260, 260, 240, 240, 200, 200};
int[] p2x = {600, 600, 620, 620, 640, 640, 660, 660, 600};
int[] p2y = {400, 420, 420, 460, 460, 420, 420, 400, 400};
int[] p3x = {400, 400, 460, 460, 440, 440, 420, 420, 400};
int[] p3y = …Run Code Online (Sandbox Code Playgroud)