gpt4 book ai didi

python - pygame blitting - 中心

转载 作者:行者123 更新时间:2023-11-28 20:20:02 26 4
gpt4 key购买 nike

我正在尝试在 python 中为 pygame 制作一个脚本,以绘制一个文本居中的按钮,但是当我 blit 到屏幕上时,它 blits 到我给它的 x 和 y,而不是按比例居中的位置。我希望能够将它集中到一组 (x,y,w,h)。我该怎么做?这是我的代码:

# Imports
import pygame

class Text:
'Centered Text Class'
# Constructror
def __init__(self, text, (x,y,w,h), color = (0,0,0)):
self.x = x
self.y = y
self.w = w
self.h = h
# Start PyGame Font
pygame.font.init()
font = pygame.font.SysFont("sans", 20)
self.txt = font.render(text, True, color)
# Draw Method
def Draw(self, screen):
coords = (self.x, self.y)
screen.blit(self.txt, coords)

编辑:评论,是的,我知道,但我只使用 x 和 y 作为临时变量,因为我不知道居中的 x 和 y 将文本居中。 (我想知道如何将它的 CENTER 居中到一个矩形,而不是它的左上角)

最佳答案

您需要使用 font.size() 方法来确定渲染文本的大小。

类似于:

class Text:
"""Centered Text Class"""
# Constructror
def __init__(self, text, (x,y), color = (0,0,0)):
self.x = x #Horizontal center of box
self.y = y #Vertical center of box
# Start PyGame Font
pygame.font.init()
font = pygame.font.SysFont("sans", 20)
self.txt = font.render(text, True, color)
self.size = font.size(text) #(width, height)
# Draw Method
def Draw(self, screen):
drawX = self.x - (self.size[0] / 2.)
drawY = self.y - (self.size[1] / 2.)
coords = (drawX, drawY)
screen.blit(self.txt, coords)

关于python - pygame blitting - 中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32673965/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com