当前位置: 首页 > 面试题库 >

在面板中放大和缩小

杨豪
2023-03-14
问题内容

我有一个面板,其中正在移动一些2D对象。我已经根据需要重写了paintComponent()。现在,我希望能够放大和缩小该区域。放大时,将出现滚动条,通过滚动条可以滚动查看整个字段。在放大和缩小时,二维对象的大小应相应增加或减小。哪个Swing组件或什至是组件组合将有助于实现这一目标?


问题答案:

最简单的方法是修改面板并引入一个双倍来指示您的缩放级别。这双会指示你的规模,其中1是正常的和更高的变焦放大。您可以使用与双一起Graphics2D在你的paintComponent

如:

Graphics2D g2 = (Graphics2D) g;
int w = // real width of canvas
int h = // real height of canvas
// Translate used to make sure scale is centered
g2.translate(w/2, h/2);
g2.scale(scale, scale);
g2.translate(-w/2, -h/2);

为了进行滚动,将面板放在JScrollPane中,然后将其与也使用缩放比例的getPreferredSize结合起来。JScrollPane使用您放入组件的首选大小。如果首选大小超过其自身大小,它将显示滚动条。

如果更改面板的首选大小,以便缩放其返回的宽度和高度,则应该没问题。基本上,您可以返回以下内容:

return new Dimension(w * scale, h * scale)


 类似资料:
  • 问题内容: 我有一个带有代码的JPanel。当我用鼠标滚轮滚动时,我希望面板朝着面板中间的位置放大。当前,每当我用鼠标滚轮放大/缩小时,图像左上角的角都保持在同一位置。我很难找到正确的算法。 为了放大图片,代码使用AffineTransform对象,该对象根据双精度值缩放图像,该值根据鼠标滚轮的移动而增大或减小。 还增加了复杂性的是,还可以在面板周围单击和拖动图像。如果单击并拖动它,则缩放仍必须放

  • 本文向大家介绍在Vue项目中,防止页面被缩放和放大示例,包括了在Vue项目中,防止页面被缩放和放大示例的使用技巧和注意事项,需要的朋友参考一下 现在vue的脚手架生成项目之后我们会发现index.html页面中。 在head标签中,我们会看到meta标签中有一条显示是 但是我们发现这条语句中只是让user-scalable=0,这是不让用户进行缩放。 可以页面会在两个手指进行放大!!! 可以页面会

  • 问题内容: 我需要实现变焦为包含在。我已经通过覆盖方法和调用来成功进行缩放。 这是不正常:对的和的规模如预期,但一定会得到的和这样的寄存器在预分频的位置。我能做什么?感谢您的阅读。 问题答案: 显示了如何使用明确的转化方法扩展鼠标坐标:,,和。)。

  • 本文向大家介绍bmp 缩放代码(BMP位图任意放大 和缩小),包括了bmp 缩放代码(BMP位图任意放大 和缩小)的使用技巧和注意事项,需要的朋友参考一下 前几天碰上需要对bmp位图进行缩放的功能, 调用API函数,虽然能实现位图缩放,但是对有放大的效果好,缩小会造成失真,图像上有花点,让人难以接受 ,因为本人以前学易语言,易语言有一段代码,对bmp图像缩放效果非常 好, 昨天抽空,把它翻译成c+

  • E/flutter(11441):#2_QuranShowState._ShowTaFseer..(封装:Alqranalkareem/Module/Quran/Show.Dart:881:32) E/Flutter(11441):#3_SliderState._HandleChanged(包:Flutter/SRC/Material/Slider.Dart:453:14) E/flutter(1

  • 问题内容: 如何在Selenium WebDriver中更改页面缩放级别?我试过了: 但这是行不通的。 问题答案: 请注意,Selenium假定缩放级别为100%!例如,当缩放级别不同时,IE将拒绝启动(引发异常),因为元素位置取决于此,并且如果更改缩放级别,它将在错误的位置单击错误的元素。 Java 您可以使用以下方法: 请谨慎使用,并在完成后将缩放比例重置为100%: C# (因为我意识到C#