affinetransform java_java – AffineTransform:从中心缩放形状

这篇博客探讨了在Java中使用AffineTransform进行图形缩放的问题,特别是针对矩形的中心缩放操作。作者遇到困扰,尽管尝试了变换矩阵的平移和缩放操作,但无法得到预期效果。博客内容涉及Graphics2D API的使用,包括设置变换、绘制矩形和恢复原始变换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我正在尝试使用AffineTransform从其中心缩放矩形.我确信解决方案很明显,但我不能让它工作!这是我到目前为止测试的…

import java.awt.Color;

import java.awt.Dimension;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.Rectangle;

import java.awt.geom.AffineTransform;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

public class Test extends JPanel {

Test()

{

super(null);

setOpaque(true);

setBackground(Color.WHITE);

setPreferredSize(new Dimension(200,200));

}

@Override

protected void paintComponent(Graphics g1) {

super.paintComponent(g1);

Rectangle r= new Rectangle(5,5,getWidth()-10,getHeight()-10);

double cx= r.getCenterX();

double cy= r.getCenterY();

Graphics2D g=(Graphics2D)g1;

g.setColor(Color.BLACK);

AffineTransform old= g.getTransform();

for(double zoom=0.9; zoom>=0.5; zoom-=0.1)

{

AffineTransform tr2= new AffineTransform(old);

tr2.translate(-cx, -cy);

tr2.scale(zoom, zoom);

tr2.translate(cx/zoom,cy/zoom);

g.setTransform(tr2);

g.draw(r);

g.setTransform(old);

}

}

public static void main(String[] args) {

JOptionPane.showMessageDialog(null, new Test());

}

}

但它不起作用….任何建议?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值