Java里面有没有哪个画图片的函数的参数是double类型的

tanweijia888 2014-07-04 11:48:39
像用Graphics2D的话,就有画矩形的Rectangle2D rect=new Rectangle2D.Double(x,y,z,k),参数都是double类型的。那画图片的有没有类似的函数呢?
...全文
314 11 打赏 收藏 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
shine333 2014-07-04
  • 打赏
  • 举报
回复
AffineTransform参数的含义,是指在当前坐标系基础上,叠加进行其他变化操作。 比如你现在的坐标系当前位置在(0,0),如果想从(100,200)作为起点,等比例画你的矩形图片 那么就是
g2d.drawRenderedImage(img, AffineTransform.getTranslateInstance(100.0, 200.0));
如果想以(100,200)为起点,且按照原样50%画图片 可以
AffineTransform transform = AffineTransform.getTranslateInstance(100,200); //先获得偏移
transform.scale(0.5, 0.5); // 在此基础上,长宽均缩小至50%
g2d.drawRenderedImage(img, transform);
当然,也可以直接对g2d.setTransform,今后所有操作的坐标系统,都将以此为标准。不过,记得set之前,先getTransform老的坐标系统,以备不时之需。
shine333 2014-07-04
  • 打赏
  • 举报
回复
理解了,尝试学会用AffineTransform,所有图形学讲变换(平移,反转,旋转,缩放等)一定会涉及到一个矩阵,这个类就是这个。 java.awt.Graphics2D.drawRenderedImage(RenderedImage, AffineTransform)或者 java.awt.Graphics2D.drawRenderableImage(RenderableImage, AffineTransform)方法 其中drawRenderedImage比较常用,因为BufferedImage就是一个RenderedImage。
tanweijia888 2014-07-04
  • 打赏
  • 举报
回复
不是,想用图片做动画,要设置图片的定点位置和宽度高度,那在graphics2D里有没有这样的函数呢?像 drawImage(Image img, int x, int y, int width, int height, ImageObserver observer)的话,坐标参数都是int型的,有没有同样的函数但是参数是double的?或者有没有像Rectangle2D那样能定义图片位置和大小函数?
shine333 2014-07-04
  • 打赏
  • 举报
回复
你要话现在这个Rectangle2D rect=new Rectangle2D.Double(x,y,z,k),吗? 直接java.awt.Graphics2D.draw(Shape)接口即可。
tanweijia888 2014-07-04
  • 打赏
  • 举报
回复 1
就是有没有一个类似drawImage的函数,但是它的参数是double类型的?
guest6379 2014-07-04
  • 打赏
  • 举报
回复
画图片是什么意思? ImageIcon就好了呀

package demo;

import java.net.MalformedURLException;
import java.net.URL;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;

public class Demo extends JFrame{
    private ImageIcon img;
    public Demo(){
        setTitle("demo");
        setSize(300,300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        try {
            img = new ImageIcon(new URL("http://avatar.csdn.net/D/A/4/1_tanweijia888.jpg"));
            add(new JLabel(img));
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
    }
    
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            
            @Override
            public void run() {
                Demo d = new Demo();
                d.setVisible(true);
            }
        });
    }
}

tanweijia888 2014-07-04
  • 打赏
  • 举报
回复
ok,搞定啦!
shine333 2014-07-04
  • 打赏
  • 举报
回复
BufferedImage image = ImageIO.read(f); 确保文件路径对
tanweijia888 2014-07-04
  • 打赏
  • 举报
回复
File f = new File("blude_car2.gif"); try { Image image = ImageIO.read(f); BufferedImage buffer1 = new BufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_RGB); g2.drawRenderedImage(buffer1, AffineTransform.getTranslateInstance(getSx()[i], getSy()[i])); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } 这样子对吗?我试了一下,图片显示不出来啊,是一块黑的。。
shine333 2014-07-04
  • 打赏
  • 举报
回复
用ImageIO读 toolkit读出来的,根本不是BufferedIamge,而且目测你代码编译不通过
tanweijia888 2014-07-04
  • 打赏
  • 举报
回复
噢好的好的!那这个img文件初始化可以这样子吗? Image icar = getToolkit().getImage("blude_car2.gif"); g2.drawRenderedImage( icar , AffineTransform.getTranslateInstance(100.0, 200.0)); 我试了一下出现异常啊。。。如果不是这样,那应该怎么样初始化呢?谢谢!!

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧