擅长:python、mysql、java
<p>首先,如何得到分辨率和比例因子?在</p>
<p>这很棘手,因为某人的屏幕可能与1334x800的纵横比不同。你可以用信箱(以各种不同的方式)或伸展精灵;你需要决定你想要什么,但我将展示一种信箱的可能性:</p>
<pre><code>NOMINAL_WIDTH, NOMINAL_HEIGHT = 1334., 800.
surface = display.get_surface()
width, height = surface.get_width(), surface.get_height()
xscale = width / NOMINAL_WIDTH
yscale = height / NOMINAL_HEIGHT
if xscale < 1 and yscale < 1:
scale = max(xscale, yscale)
elif xscale > 1 and yscale > 1:
scale = min(xscale, yscale)
else:
scale = 1.0
</code></pre>
<hr/>
<p>现在,如何缩放每个精灵和背景?在</p>
<p>好吧,首先,你确定你想吗?只是变换整个曲面可能更简单。如果不进行测试,很难预测这是慢还是快(而且可能与此无关),但它肯定会看起来更好(因为任何插值、抖动、抗锯齿等都是在合成之后发生的,而不是之前,除非您要使用8位外观,当然,在这种情况下,它会破坏外观…)。您可以通过将所有内容合成为1334x800的离屏表面(或者,更好的是,将所有内容放大一个常数因子),然后对该表面进行<a href="https://www.pygame.org/docs/ref/transform.html" rel="nofollow">^{<cd1>}</a>显示。(请注意,<code>transform</code>方法包括可选的<code>DestSurface</code>参数。您可以使用此选项直接从屏幕外表面变换到显示器表面。)</p>
<hr/>
<p>但假设你想按你要求的方式去做。在</p>
<p>你可以这样做时,加载精灵。例如:</p>
^{pr2}$
<p>背景也是一样。在</p>