缩放Graphics2D对象

2019年4月22日 11点热度 0条评论

我目前有一个Graphics2D对象,它充当垂直坐标系(常规X-Y系统)。我想实现对鼠标侦听器起作用的缩放。我曾考虑过使用Robot类获取BufferedImage,然后使用PixelGrabber进行放大,但想知道是否可以不使用Image对象直接使用Graphics2D。

解决方案如下:

是。您可以使用AffineTransform(尤其是AffineTransform.getScaleInstance)缩放图形上下文的所有方面。您可以使用它来放大(创建更大的比例)或缩小(使用小于1的比例)。我有a blog post that shows how to use AffineTransforms for things like rotation and translation,并且缩放比例不大,但这是一个相似的原理。您必须注意缩放图形上下文会如何影响选择,侦听器等内容。(您必须将面板的坐标系转换为图形上下文的坐标系,才能正确选择/单击缩放图形上下文中的对象。)