【问题标题】:Turtle Graphics - Resize Shapes To DisplayTurtle Graphics - 调整要显示的形状
【发布时间】:2017-04-13 23:16:13
【问题描述】:

我正在使用 Python 2.7。我只能使用 turtle 模块来创建游戏。我的 1920 x 1080 显示器 可以完美地缩放所有图像并且动画播放良好,但 (例如)1280 x 720 显示器 上,图像无法正确缩放。我正在使用turtle.shape() 来获取图像。我该如何解决这个问题?

我添加了一张图片

video 进一步解释问题。

如您所见,图标重叠,图像弹回第四次,而不是直接前进。

这就是我定义屏幕尺寸的方式:

screen_width = ctypes.windll.user32.GetSystemMetrics(0) - ctypes.windll.user32.GetSystemMetrics(0) / 4

screen_height = ctypes.windll.user32.GetSystemMetrics(1) - ctypes.windll.user32.GetSystemMetrics(1) / 4
  • 它采用显示尺寸并将自身除以 4 用于窗口的最终显示。

【问题讨论】:

  • 听起来您在某处对窗口大小进行硬编码假设。
  • 这是我定义屏幕尺寸的方式:(已添加到帖子中)
  • 有人得到了什么吗?

标签: python python-2.7 turtle-graphics


【解决方案1】:

如果没有您的代码,我无法在我的环境中对此进行全面测试。这个想法是使用虚拟坐标,以便在统一处理单个图形元素的级别上进行缩放:

import turtle

VIRTUAL_ASPECT_RATIO = 1.8
VIRTUAL_WIDTH = 2000
VIRTUAL_HEIGHT = VIRTUAL_WIDTH / VIRTUAL_ASPECT_RATIO

screen_width = 3 * ctypes.windll.user32.GetSystemMetrics(0) / 4
screen_height = 3 * ctypes.windll.user32.GetSystemMetrics(1) / 4

# attempt to adjust the real window to match the virtual aspect ratio
if screen_width / VIRTUAL_ASPECT_RATIO < screen_height:
    screen_height = screen_width / VIRTUAL_ASPECT_RATIO
elif screen_height * VIRTUAL_ASPECT_RATIO < screen_width:
    screen_width = screen_height * VIRTUAL_ASPECT_RATIO
else:
    pass  # probably need to do something where we adjust both

screen = turtle.Screen()
screen.setup(screen_width, screen_height)  # size the real window
screen.setworldcoordinates(-VIRTUAL_WIDTH/2, -VIRTUAL_HEIGHT/2, VIRTUAL_WIDTH/2, VIRTUAL_HEIGHT/2)  # virtual coordinates

yertle = turtle.Turtle()

yertle.circle(100)

turtle.mainloop()

让我们知道以上内容对您有何影响。

【讨论】:

  • 我使用了纵横比,它们工作得很好,除了 1280 x 720 屏幕上的动画没有完全工作。当我使用.setworldcoordinates 时,图像重叠,没有它,它按预期工作。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-24
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
  • 2016-07-04
  • 2012-10-31
  • 2013-06-26
相关资源
最近更新 更多