Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将文本放置在特定位置?_Python_Pygame - Fatal编程技术网

Python 如何将文本放置在特定位置?

Python 如何将文本放置在特定位置?,python,pygame,Python,Pygame,关于如何将文本放置在特定坐标(包括可调整大小的窗口和背景图片)上的问题,我坚持己见。这是我的密码: import pygame from pygame.locals import * import numpy as np import matplotlib.pyplot as plt import argparse import threading, os, sys, time pygame.init() pygame.display.set_caption("AI Battlehip Gam

关于如何将文本放置在特定坐标(包括可调整大小的窗口和背景图片)上的问题,我坚持己见。这是我的密码:

import pygame
from pygame.locals import *
import numpy as np
import matplotlib.pyplot as plt
import argparse
import threading, os, sys, time

pygame.init()
pygame.display.set_caption("AI Battlehip Game")

original_size = (1200,700)

FPS = pygame.time.Clock()

red = (255,0,0)

screen = pygame.display.set_mode(original_size, HWSURFACE|DOUBLEBUF|RESIZABLE)
back_end_image_set = pygame.image.load(r'/Users/User1/Desktop/Project work/images/backgroundimage1.jpg') 
screen.blit(pygame.transform.scale(back_end_image_set, original_size), (0,0))
pygame.display.flip()


myFont = pygame.font.SysFont('freesansbold.ttf', 60)
label = myFont.render('Check 1', 1, (red))

pos_W = (1200 - label.get_width())//2
pos_H = (700 - label.get_height())//2

FPS.tick(60)

try:                                                   
    while True:
        pygame.event.pump()
        event = pygame.event.wait()
        if event.type == QUIT:
            pygame.display.quit()
        elif event.type == VIDEORESIZE:
            screen = pygame.display.set_mode(event.dict['size'], HWSURFACE|DOUBLEBUF|RESIZABLE)
            new_size = event.dict['size']
            screen.blit(pygame.transform.scale(back_end_image_set, new_size), (0,0))
            label_W = pos_W * new_size[0] // original_size[0]
            label_H = pos_H * new_size[1] // original_size[1] 
            screen.blit(pygame.transform.scale(label, (label_W, label_H)), (0,0))
            pygame.display.flip()
except:
    raise

任何帮助都将不胜感激。多谢各位

您必须缩放文本表面的位置和大小(
标签
):

label\u W=label.get\u width()*新的\u大小[0]//原始的\u大小[0]
label\u H=label.get\u height()*新的\u大小[1]//原始的\u大小[1]
label\u X=pos\u W*新大小[0]//原始大小[0]
label_Y=pos_H*新尺寸[1]//原始尺寸[1]
blit(pygame.transform.scale(标签,(标签W,标签H)),(标签X,标签Y))
请注意,调整线性大小将沿x轴和y轴缩放窗口。x轴和y轴的比例因子可应用于曲面上的每个点或向量。矩形的位置以与其大小相同的比例变化:

scale\u x,scale\u y=(新大小[0]/原始大小[0],新大小[1]/原始大小[1])
label_size=(int(label.get_width()*scale_x),int(label.get_height()*scale_y))
标签位置=(int(位置W*刻度x),int(位置H*刻度y))
screen.blit(pygame.transform.scale(标签、标签大小)、标签位置)