Python 海龟图形-调整要显示的形状大小
我正在使用Python 2.7。我只能使用海龟模块创建一个游戏。我的1920 x 1080显示器可以完美缩放所有图像,动画播放效果也很好,但是(例如)在1280 x 720显示器上,图像无法正确缩放。我正在使用Python 海龟图形-调整要显示的形状大小,python,python-2.7,turtle-graphics,Python,Python 2.7,Turtle Graphics,我正在使用Python 2.7。我只能使用海龟模块创建一个游戏。我的1920 x 1080显示器可以完美缩放所有图像,动画播放效果也很好,但是(例如)在1280 x 720显示器上,图像无法正确缩放。我正在使用turtle.shape()处理图像。我该如何解决这个问题 我添加了一个图像 和a来进一步解释这个问题 正如您所看到的,图标重叠,图像反弹到第四个,而不是一直向前 以下是我定义屏幕大小的方式: screen_width = ctypes.windll.user32.GetSystemMe
turtle.shape()
处理图像。我该如何解决这个问题
我添加了一个图像
和a来进一步解释这个问题
正如您所看到的,图标重叠,图像反弹到第四个,而不是一直向前
以下是我定义屏幕大小的方式:
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,作为窗口的最终显示
- 没有您的代码,我无法在我的环境中完全测试这一点。其思想是使用虚拟坐标,以便在统一处理单个图形元素的级别上进行缩放:
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()
导入海龟
虚拟纵横比=1.8
虚拟宽度=2000
虚拟高度=虚拟宽度/虚拟纵横比
屏幕宽度=3*ctypes.windl.user32.GetSystemMetrics(0)/4
屏幕高度=3*ctypes.windlel.user32.GetSystemMetrics(1)/4
#尝试调整实际窗口以匹配虚拟纵横比
如果屏幕宽度/虚拟屏幕纵横比<屏幕高度:
屏幕高度=屏幕宽度/虚拟纵横比
elif屏幕高度*虚拟纵横比<屏幕宽度:
屏幕宽度=屏幕高度*虚拟纵横比
其他:
pass#可能需要做一些调整
screen=turtle.screen()
屏幕。设置(屏幕宽度、屏幕高度)#调整真实窗口的大小
screen.setworldcoordinates(-VIRTUAL_-WIDTH/2,-VIRTUAL_-HEIGHT/2,VIRTUAL_-WIDTH/2,VIRTUAL_-HEIGHT/2)虚拟坐标
yertle=海龟。海龟()
耶特尔圆(100)
tutle.mainloop()
让我们知道以上内容对您的作用。没有您的代码,我无法在我的环境中对其进行全面测试。其思想是使用虚拟坐标,以便在统一处理单个图形元素的级别上进行缩放:
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()
导入海龟
虚拟纵横比=1.8
虚拟宽度=2000
虚拟高度=虚拟宽度/虚拟纵横比
屏幕宽度=3*ctypes.windl.user32.GetSystemMetrics(0)/4
屏幕高度=3*ctypes.windlel.user32.GetSystemMetrics(1)/4
#尝试调整实际窗口以匹配虚拟纵横比
如果屏幕宽度/虚拟屏幕纵横比<屏幕高度:
屏幕高度=屏幕宽度/虚拟纵横比
elif屏幕高度*虚拟纵横比<屏幕宽度:
屏幕宽度=屏幕高度*虚拟纵横比
其他:
pass#可能需要做一些调整
screen=turtle.screen()
屏幕。设置(屏幕宽度、屏幕高度)#调整真实窗口的大小
screen.setworldcoordinates(-VIRTUAL_-WIDTH/2,-VIRTUAL_-HEIGHT/2,VIRTUAL_-WIDTH/2,VIRTUAL_-HEIGHT/2)虚拟坐标
yertle=海龟。海龟()
耶特尔圆(100)
tutle.mainloop()
让我们知道以上内容对您的作用。听起来您好像在对某个地方的窗口大小进行硬编码假设。这就是我定义屏幕大小的方式:(添加到帖子中)有人知道吗?听起来您好像在对某个地方的窗口大小进行硬编码假设。这就是我定义屏幕大小的方式:(添加到帖子中)有人得到什么吗?我使用了纵横比,它们工作得很好,除了1280 x 720屏幕上的动画没有完全工作。当我使用
.setworldcoordinates
时,图像重叠,如果没有它,它会按预期工作。谢谢。我使用了纵横比,它们工作得很好,除了1280 x 720屏幕上的动画没有完全工作。当我使用.setworldcoordinates
时,图像重叠,如果没有它,它会按预期工作。谢谢