当前位置: 代码迷 >> Java相关 >> java绘图最小单位问题?
  详细解决方案

java绘图最小单位问题?

热度:352   发布时间:2012-02-19 23:22:53.0
java绘图最小单位问题?
我最近在做虚拟平台,就是模拟机器人在场地上的运动。但是在绘制场地图的时候出现了一个问题,场地要求是13000*13000的正方形(假设单位是像素)。但是我的电脑屏幕不可能有那么大,于是考虑使用缩放,但是这又会导致场地图失真。所以我请问java中有没有如同mfc中gdi映射模式,将单位缩小,但确保不失真。
搜索更多相关的解决方案: java  机器人  正方形  地图  

----------------解决方案--------------------------------------------------------
看看jMonkeyengine的文档。
----------------解决方案--------------------------------------------------------
我以前写的游戏都是先画出一个屏幕的地图来,然后再根据玩家运动进行地图滚动。当然这算法也很简单的,完全可以按照自己的需求来实现自己的算法。
----------------解决方案--------------------------------------------------------
我以前写的游戏都是先画出一个屏幕的地图来,然后再根据玩家运动进行地图滚动。

先谢谢了,我想请问怎么实现地图滚动?
我试着将图画在panel上,然后加入到JScrollPane中,
但是图够大,依旧没有出现滚动条。
求解?
----------------解决方案--------------------------------------------------------
看你这样子不像是做手机游戏了,那这样吧,随便写了个弱智的方法,
static int x = 0;
    static int y = 0;
    static JLabel jl = null;
    public static void main(String args[]) throws  Exception
    {
        JFrame jf = new JFrame();
        JButton jb = new JButton("移动");
        jl = new JLabel(new ImageIcon("images/i.png"));
        jb.addActionListener(new ActionListener(){

            @Override
            public void actionPerformed(ActionEvent arg0) {
                // TODO Auto-generated method stub
                x+=10;
                y+=10;
                jl.setLocation(0-x, 0-y);
            }
            
        });
        
        jf.add(jb,new BorderLayout().NORTH);
        jf.add(jl,new BorderLayout().SOUTH);
        jf.setSize(400, 300);
        jf.setResizable(false);
        jf.setVisible(true);
    }
----------------解决方案--------------------------------------------------------
public class YWindows extends JLabel
{
    private Graphics g;
   
    private JFrame frame;
   
    private JScrollPane spanel;
   
    public YWindows ()
    {
       frame = new JFrame("Graphics");
      
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      
       spanel = new JScrollPane(this);
      
       frame.setContentPane(spanel);
      
      
//       frame.setSize(1300, 1300);
      
       frame.pack();
      
       frame.setVisible(true);
      
       this.setLayout(null);

       this.paint(g);
    }
   
    @Override
    public void paint(Graphics g)
    {
        g.setColor(Color.CYAN);
        g.fillRect(10, 10, 196, 152);
        
        g.setColor(Color.red);
        g.fillRect(206, 10, 100, 100);
        
        g.setColor(Color.PINK);
        g.fillRect(10, 152, 443, 443);
        
        g.setColor(Color.CYAN);
        g.fillRect(275, 595, 100, 155);//L3
        
        
        g.setColor(Color.PINK);
        g.fillRect(10, 595, 275, 155);
        
        g.setColor(Color.PINK);
        g.fillRect(10, 750, 375, 342);
        
    }
   
   
    public static void main(String[] args)
    {
        new YWindows();
    }
   
}

这是我写的代码,我的意思是直接在画布上绘图,然后加入到面板上。而不是载入图片。
请教一下。谢谢……
----------------解决方案--------------------------------------------------------
那你可以给YWindows设置两个变量x,y来表示要绘制图片的位置,然后将大图片在裁剪成一定大小的单元,比如:100*100的,并存储在一个数组中,然后根据情况使用 g.draw(Image,x,y,null)来绘制的图片,当然我这只是给你说一下我的思路,这样,你可以在做程序的时候将你的游戏戏窗体的大小设置为固定大小,这样在处理绘制地图时会比较简单。说的不好,因为我之前写的基本都是手机游戏。
----------------解决方案--------------------------------------------------------
学习了
----------------解决方案--------------------------------------------------------
回复 2楼 lucky563591
能给个win7 64 的编程软件吗 564667368@qq.com
----------------解决方案--------------------------------------------------------
  相关解决方案