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编写的绘图程序”,希望能帮我实现这个功能。还有,我那个程序绘图时,光标出了画布的范围就不能再绘图了,也就是不能在角上画个半圆,要怎么改? java一个排序的问题 反射创建对象报错 applet问题 【急】如何用java读取word文档 055.171--垃圾回收 JAVA 线程 sleep()和synchronized 的抛异常问题 高分请教十六进制表示经纬度 老问题,怎么把 UTF-8 转换成 GB2312 单个字节接收时的乱码问题 在java中,static final常量是否占用运行时的内存? 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编写的绘图程序”,希望能帮我实现这个功能。还有,我那个程序绘图时,光标出了画布的范围就不能再绘图了,也就是不能在角上画个半圆,要怎么改?