如何在 pygame 中绘制更多 detailed/smoother 个图像?
How can you draw more detailed/smoother images in pygame?
我一直在尝试进入矢量风格的艺术世界,最近我尝试使用 .blit() 方法对矢量图像进行 blit 处理,但是当我对它进行 blit 处理时,它以像素化的形式出现。
图片如下:
这是它在 pygame
中的样子
代码为:
import pygame
screen = pygame.display.set_mode((500,500))
img = pygame.image.load("C:/Users/socia/Downloads/9nA8s.png")
img = pygame.transform.scale(img, (500,500))
isrunning = True
while isrunning:
for event in pygame.event.get():
if event.type == pygame.QUIT:
isrunning = False
screen.blit(img, (0,0))
pygame.display.update()
如何绘制与第一个提到的相似的图像以及如何在 pygame 中正确实现它。
任何东西都将不胜感激,谢谢!
使用pygame.transform.smoothscale
instead of pygame.transform.scale
:
img = pygame.transform.scale(img, (500,500))
img = pygame.transform.smoothscale(img, (500,500))
虽然 pygame.transform.scale
使用 最近的 像素执行快速缩放,但 pygame.transform.smoothscale
通过像素插值将表面平滑地缩放到任意大小。
为了获得更好的效果,您可能需要切换到矢量图形格式,例如 SVG (Scalable Vector Graphics)。
请参阅问题 SVG rendering in a PyGame application 的答案和以下最小示例:
import pygame
pygame.init()
window = pygame.display.set_mode((300, 300))
clock = pygame.time.Clock()
pygame_surface = pygame.image.load('Ice.svg')
run = True
while run:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
window.fill((127, 127, 127))
window.blit(pygame_surface, pygame_surface.get_rect(center = window.get_rect().center))
pygame.display.flip()
pygame.quit()
exit()
我一直在尝试进入矢量风格的艺术世界,最近我尝试使用 .blit() 方法对矢量图像进行 blit 处理,但是当我对它进行 blit 处理时,它以像素化的形式出现。
图片如下:
这是它在 pygame
中的样子代码为:
import pygame
screen = pygame.display.set_mode((500,500))
img = pygame.image.load("C:/Users/socia/Downloads/9nA8s.png")
img = pygame.transform.scale(img, (500,500))
isrunning = True
while isrunning:
for event in pygame.event.get():
if event.type == pygame.QUIT:
isrunning = False
screen.blit(img, (0,0))
pygame.display.update()
如何绘制与第一个提到的相似的图像以及如何在 pygame 中正确实现它。
任何东西都将不胜感激,谢谢!
使用pygame.transform.smoothscale
instead of pygame.transform.scale
:
img = pygame.transform.scale(img, (500,500))
img = pygame.transform.smoothscale(img, (500,500))
虽然 pygame.transform.scale
使用 最近的 像素执行快速缩放,但 pygame.transform.smoothscale
通过像素插值将表面平滑地缩放到任意大小。
为了获得更好的效果,您可能需要切换到矢量图形格式,例如 SVG (Scalable Vector Graphics)。
请参阅问题 SVG rendering in a PyGame application 的答案和以下最小示例:
import pygame
pygame.init()
window = pygame.display.set_mode((300, 300))
clock = pygame.time.Clock()
pygame_surface = pygame.image.load('Ice.svg')
run = True
while run:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
window.fill((127, 127, 127))
window.blit(pygame_surface, pygame_surface.get_rect(center = window.get_rect().center))
pygame.display.flip()
pygame.quit()
exit()