java icon的操作,求高手指点!!! 定义了一个Icon icon=new ImageIcon( "src/test.jpg "); 想着把icon用在Label上,用之前想把icon翻转90度,能不能实现?很着急、、、 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 额~~~主要是想实现单击一个按钮,然后在四个Label上或是Button上显示出一个图片的四个翻转效果、、、、现在就是不知道如何在用一个图片之前就完成翻转效果 额~~~主要是想实现单击一个按钮,然后在四个Label上或是Button上显示出一个图片的四个翻转效果、、、、现在就是不知道如何在用一个图片之前就完成翻转效果 有个类叫 IconUIResource可以直接复用现有的 Icon ,然后根据不同角度,旋转坐标系,然后调用 Icon 的绘制函数得自己去实现一个定制的IconUIResource @SuppressWarnings("serial")class RotateIcon extends IconUIResource { private int degree; public RotateIcon(Icon icon, int degree) { super(icon); this.degree = degree; } @Override public void paintIcon(Component c, Graphics g, int x, int y) { Graphics2D g2d = (Graphics2D) g; // 获取当前的坐标系状态 AffineTransform atf = g2d.getTransform(); AffineTransform clone = (AffineTransform) atf.clone(); // 以原始Icon的中心点为中心进行坐标系旋转 atf.rotate(Math.PI / 180 * degree, x + getIconWidth() / 2, y + getIconHeight() / 2); g2d.setTransform(atf); // 绘制 super.paintIcon(c, g, x, y); // 重置坐标系 g2d.setTransform(clone); }} 测试代码public class IconTest { /** * @param args */ public static void main(String[] args) throws Exception { ImageIcon icon = new ImageIcon(ImageIO.read(new File("icon.jpg"))); JFrame frame = new JFrame(); BorderLayout layout = new BorderLayout(); Container container = frame.getRootPane(); container.setLayout(layout); container.add(new JButton(new RotateIcon(icon, 0)), BorderLayout.SOUTH); container.add(new JButton(new RotateIcon(icon, 90)), BorderLayout.WEST); container.add(new JButton(new RotateIcon(icon, 180)), BorderLayout.NORTH); container.add(new JButton(new RotateIcon(icon, 270)), BorderLayout.EAST); frame.pack(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); }} 这位大神能不能给实现一下,我知道好像是旋转Graphics,但具体代码的就不太懂了。我会把这个帖子分数加满的,当然如果你没时间帮我,我也会给你的,这个不能代表什么,所以非常感谢您的帮助。 绘图完成后,你可以得到一个Image 吧把这个Image生成 ImageIcon,然后再使用上面的RotateIcon包装,分别传入不同的旋转参数,设置到其它格子里或者自定义一个Image组件,根据坐标转换参数,执行对Image不同的绘制操作.在九宫格的其它格子里,分别填上这个组件,并设置不同的坐标转换参数 我把工程上传到我的上传资源里了,名字叫 “java编写的绘图程序”,希望能帮我实现这个功能。还有,我那个程序绘图时,光标出了画布的范围就不能再绘图了,也就是不能在角上画个半圆,要怎么改? AIX4.3下能安装JDK1.5吗? 超急問題...謝謝... 我想输出一个长整形数的位数,可为什么不行呢? 求Java高手指点 为什么代码运行不听话了 请教一个关于socket的问题 谁能简单告诉我一下JBuilder怎么用?看帮助文档太费事了! 大富翁我怎么不能提问? 谁知道?有这样的API吗? 关于布局管理器的问题 netbeans使用问题!急求帮助!! JAVA中数组初始化的问题
现在就是不知道如何在用一个图片之前就完成翻转效果
现在就是不知道如何在用一个图片之前就完成翻转效果
可以直接复用现有的 Icon ,然后根据不同角度,旋转坐标系,然后调用 Icon 的绘制函数
得自己去实现一个定制的IconUIResource
@SuppressWarnings("serial")
class RotateIcon extends IconUIResource { private int degree; public RotateIcon(Icon icon, int degree) {
super(icon);
this.degree = degree;
} @Override
public void paintIcon(Component c, Graphics g, int x, int y) {
Graphics2D g2d = (Graphics2D) g;
// 获取当前的坐标系状态
AffineTransform atf = g2d.getTransform();
AffineTransform clone = (AffineTransform) atf.clone();
// 以原始Icon的中心点为中心进行坐标系旋转
atf.rotate(Math.PI / 180 * degree, x + getIconWidth() / 2, y + getIconHeight() / 2);
g2d.setTransform(atf);
// 绘制
super.paintIcon(c, g, x, y);
// 重置坐标系
g2d.setTransform(clone);
}
}
* @param args
*/
public static void main(String[] args) throws Exception {
ImageIcon icon = new ImageIcon(ImageIO.read(new File("icon.jpg")));
JFrame frame = new JFrame();
BorderLayout layout = new BorderLayout();
Container container = frame.getRootPane();
container.setLayout(layout);
container.add(new JButton(new RotateIcon(icon, 0)), BorderLayout.SOUTH);
container.add(new JButton(new RotateIcon(icon, 90)), BorderLayout.WEST);
container.add(new JButton(new RotateIcon(icon, 180)), BorderLayout.NORTH);
container.add(new JButton(new RotateIcon(icon, 270)), BorderLayout.EAST);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
这位大神能不能给实现一下,我知道好像是旋转Graphics,但具体代码的就不太懂了。
我会把这个帖子分数加满的,当然如果你没时间帮我,我也会给你的,这个不能代表什么,所以非常感谢您的帮助。
把这个Image生成 ImageIcon,然后再使用上面的RotateIcon包装,分别传入不同的旋转参数,设置到其它格子里或者自定义一个Image组件,根据坐标转换参数,执行对Image不同的绘制操作.
在九宫格的其它格子里,分别填上这个组件,并设置不同的坐标转换参数
我把工程上传到我的上传资源里了,名字叫 “java编写的绘图程序”,希望能帮我实现这个功能。还有,我那个程序绘图时,光标出了画布的范围就不能再绘图了,也就是不能在角上画个半圆,要怎么改?