作者eliang ()
看板GameDesign
标题[问题] urmap,googleMaps地图的平移和缩放要怎 …
时间Tue May 8 22:58:43 2007
相信各位应该都有用过 urmap, GoogleMaps, 或 papago 吧?
它们都可以用滑鼠来平移 (pan) 和缩放 (zoom) 地图,
现在我想用 java swing 写出一个类似功能的东西,
平移对我来说没问题,
但我写出来的缩放, 并不是以画面的中心做缩放,
就像这样:
http://www.cs.nccu.edu.tw/~s9204/java/CanvasTest.htm
(上面网址是 Java Applet, 需装 JRE 5.0+ 才能执行)
(进入上面网址, 可看到左上角有个小圆, 请先用滑鼠左键把它
拖下来, 再做测试)
完整程式码在:
http://www.cs.nccu.edu.tw/~s9204/java/test/CanvasTest.java
如果懒得看完整程式码的话, 可以看一下精简程式码:
class Canvas extends JPanel {
// other code...
@override
void paint(Graphics g) {
super.paint(g);
Graphics2D g2d = (Graphics2D) g;
// pan and zoom
// panX, panY 是目前的平移量
// zoomX, zoomY 是目前的缩放量
g2d.translate(panX, panY);
g2d.scale(zoomX, -zoomY); // 使用 -zoomY 是因为要把 Y 轴方向倒过来
// draw something
g2d.drawLine(0, 0, 10, 10);
g2d.drawOval(-10, -10, 20, 20);
}
}
我想很久还是不知道要怎麽做,
所以请问各位到底怎麽让它以画面中心缩放?
谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.132.133.199
※ 编辑: eliang 来自: 220.132.133.199 (05/08 22:59)
1F:推 littleshan:见 #642 05/09 01:54
2F:推 eliang:嗯 那篇问题就是我问的,我有依照过#642的写法写, 05/09 15:34
3F:→ eliang:缩放虽然可以达到我要的效果,但反而使平移变得怪怪的, 05/09 15:35
4F:→ eliang:所以我这次要问的不光只是缩放,而是平移加缩放 05/09 15:36