Python:乌龟大小(以像素为单位)

时间:2014-09-07 17:19:58

标签: python size pixels turtle-graphics

我遇到了问题。我希望在Python中获得我的乌龟的像素大小,但我该如何得到它?

3 个答案:

答案 0 :(得分:1)

我确切地知道你的意思,shapeize不等于宽度(以像素为单位),它让我有一天或两天的错误。

我最终将乌龟形状改为正方形,只需在窗口中使用打印屏幕拍摄中间有方形乌龟的画布快照,然后将该打印屏幕放入Photoshop中以放大直到正方形直到我能看到像素网格,我发现方形乌龟的默认大小是21x21像素,谁知道为什么他们成为21但我发现如果我采取一些固体值我希望乌龟像素像20和除那是21我得到0.9523 ......

将值四舍五入到0.95并将其放入shapeize给了我一个正好20x20像素的方形乌龟并且使它更容易使用,你可以使用你希望乌龟像素的任何数字来做到这一点但我有只用方形乌龟试过。

我希望这会有所帮助,或者让你知道如何找到以像素为单位的乌龟大小,ms-paint会做同样的事情,只要你转到视图选项卡并打开网格然后尽可能放大。 / p>

答案 1 :(得分:1)

乌龟形状存储在TurtleScreen类的字典中,其中形状square的键包含:

Shape("polygon", ((10,-10), (10,10), (-10,10), (-10,-10)))

所有光标形状似乎都适合这个20 x 20的方格。我使用shapesize()进行编程时的操作如下:

STAMP_SIZE = 20
...
turtle.shapesize(size / STAMP_SIZE)

size是多大(或小)我希望光标以像素为单位。这不一定是统一的,有时候我会这样做:

turtle.shapesize(size / STAMP_SIZE, 1 / STAMP_SIZE)  # vertical line

请记住shapesize()的宽度和长度参数与乌龟的方向有关,因此 width 位于乌龟指向的方向,长度是垂直的那个。

如果您真的想知道当前乌龟光标的尺寸(包括任何变换后),您可以使用turtle.get_shapepoly()。但这会给你一个多边形,所以你需要从多边形顶点算出高度,宽度,面积或你需要的东西。

答案 2 :(得分:0)

Python 海龟的大小和行为方式并不明显。我懒得看所有的实现代码,但我想我至少可以解释一下情况。

正如有人指出的那样,方龟的默认大小实际上是 21x21。但是,当您尝试使用 shapesize() 调整它的大小时,您会注意到一些奇怪的事情。如果你写这样的东西,

turtle.shapesize(stretch_wid=2, stretch_len=0.5)

理论上,生成的宽度应为 42,长度应为 10(地板)或 11(天花板)。我们在现实中看到的是,新的长度是 11,而新的宽度是 41。

所有这些都有意义的唯一方法是如果默认方龟的实际大小是 20x20,但它在屏幕上只显示 21x21。在我的测试中,它分别显示 81x81、41x41、11x11、6x6 而不是 80x80、40x40、10x10、5x5。这个假设也解释了为什么给出 0.95 的拉伸因子会导致 20x20 的方形海龟:20 倍 0.95 是 19,但最终结果在两个轴上都显示了 1 个额外的像素,因此最终您会在屏幕上看到一个 20x20 的方形海龟。

turtle 模块的 CPython 实现可能是完美无缺的,但我认为我们都同意这是一个糟糕的设计。因此,我强烈建议您将 Pygame 用于涉及动画和 Tkinter 的项目,用于处理静态或非常低帧率的图形。即使您正在寻找挑战,使用乌龟模块也可能是一个真正的痛苦,最好找到替代方案。