java绘图最小单位问题?
我最近在做虚拟平台,就是模拟机器人在场地上的运动。但是在绘制场地图的时候出现了一个问题,场地要求是13000*13000的正方形(假设单位是像素)。但是我的电脑屏幕不可能有那么大,于是考虑使用缩放,但是这又会导致场地图失真。所以我请问java中有没有如同mfc中gdi映射模式,将单位缩小,但确保不失真。
----------------解决方案--------------------------------------------------------
看看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 ----------------解决方案--------------------------------------------------------