【发布时间】:2013-01-02 22:35:35
【问题描述】:
我目前正在为我正在处理的一个小项目编写一些 GUI 代码,并且我已经到了需要实现滚动条及其相关容器的地步。为了便于执行,我希望能够将“滚动框”(滚动条将影响的窗口)内的所有元素绘制到与主显示表面不同的表面。然后将根据需要裁剪单独的表面,然后在渲染循环中将其绘制到显示表面。但是,我无法使其正常工作。
在我的ScrollBox 类的draw() 方法中,我有以下代码。
def draw(self):
self.subSurface.blit(self.image, (x, y))
#subSurface is, naturally, a Surface, and image is a pygame.Image; x and y are whatever
self.displaySurface.blit(self.subSurface, (x,y))
与我的代码中的所有可绘制 GUI 元素一样,每次通过主渲染循环时都会调用 draw()。上面的代码给我的是默认填充的黑色矩形,self.image 不以任何容量显示。我尝试用
pygame.draw.rect(self.subSurface, color, rect)
但它产生了相同的结果。从我对其他 Pygame GUI 库的阅读来看,我想做的似乎是可能的,但我认为我没有正确执行它。如何将其他源/表面附加到subSurface,然后让subSurface 由displaySurface 绘制(附有源)?
任何帮助将不胜感激。谢谢。
【问题讨论】:
-
blit()dest 坐标相对于目标表面的左上角。如果将第一个 blit 更改为目标(0, 0),会发生什么? -
哇,好电话。你是绝对正确的——我很尴尬,我没有意识到这一点,哈哈。感谢您的帮助。
标签: python pygame geometry-surface