python - 在 Pygame 中旋转图像时图像质量不佳
问题描述
我的第一个 Pygame 程序,它是一个使用来自 python-obd 的 rpm 数据的虚拟转速计。我每次都通过原始图像进行旋转,但仍然会在 0、90、180 等角度以外的角度出现失真。我错过了什么吗?* 针图像围绕中心旋转,一半是透明的。
import pygame
from pygame.locals import *
import time
from buttonClass import *
import obd
obd.logger.setLevel(obd.logging.DEBUG)
connection = obd.Async("\\.\\COM3")
pygame.init()
screen = pygame.display.set_mode((800,480))
pygame.display.set_caption('Virtual Dash')
rpm = 0
def rpm_gauge():
gauge_image = pygame.image.load(r"C:\Users\olinr\CS121\gaugecrop.jpg")
rpm_gauge = pygame.transform.scale(gauge_image, (281,280))
return rpm_gauge
def gauge_needle():
needle_image = pygame.image.load(r"C:\Users\olinr\CS121\needtransp.png")
needle = pygame.transform.scale(needle_image, (270, 4))
#needle.set_colorkey((0,0,0))
return needle
# def rotate_needle(needle, angle):
# rotated_needle = pygame.transform.rotate(needle, angle)
# return rotated_needle
def get_rpm(r):
global rpm
if not r.is_null():
rpm = int(r.value.magnitude)
def update_fps():
fps = str(int(clock.get_fps()))
fps_text = font.render(fps + " fps", 1, pygame.Color("coral"))
return fps_text
pivot = (340, 336.5)
run = True
clock = pygame.time.Clock()
connection.watch(obd.commands.RPM, callback=get_rpm)
connection.start()
angle = 0
while run:
screen.fill(black)
gauge = rpm_gauge()
angle = 36 * (rpm * -.001) + 90
needle_rotated = pygame.transform.rotate(gauge_needle(), angle)
screen.blit(gauge, (260,200))
screen.blit(needle_rotated, (400 - int(needle_rotated.get_width() / 2), 336 -
int(needle_rotated.get_height() / 2)))
screen.blit(update_fps(), (0, 350))
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
#clock.tick(120)
#rpm += 70
pygame.display.update()
pygame.display.flip()
pygame.quit()
解决方案
推荐阅读
- python - 从 csv 文件中查找多列的中位数
- java - 最小/最大组合框动态功能
- sql - 在 Postgres 中返回 SETOF 表的函数
- java - 从另一个类控制器 Java (JavaFX) 到达选项卡 (TabPane)
- r - R httr 内容类型图片
- aws-lambda - 调用 lambda 函数给出“errorMessage”:“找不到模块'semver'”
- python - python中整数到单词的错误答案
- assembly - 如何在辅助/汇编程序中打印文字值
- reactjs - 如何删除正确的文本区域?
- java - 为什么Processing会以一种简单的方式绘制我的正弦波?