我正在使用pygame制作绘画程序,这需要一个调色板。
我的代码基本上是:
from pygame import *
screen = display.set_mode((1152,864))
color = (0,0,0)
palette = image.load("images/palette.jpg")
paletteRect=Rect(0,675,150,200)
running = True
while running:
finish = False
for e in event.get():
if e.type == QUIT:
running = False
screen.blit(palette,paletteRect)
if mb[0] == 1 and paletteRect.collidepoint(mx,my):
color = spectrum.get_at((mx,my))
它会发生什么:color = palette.get_at((mx,my))IndexError:像素索引超出范围
但是,如果我将其更改为paletteRect = palette.get_rect(),我的调色板工作得非常好。有人知道怎么修这个东西吗?谢谢。
答案 0 :(得分:0)
我说你的问题是(mx, my)
表示屏幕坐标(虽然很难说你没有包含这部分代码),所以当点击与你的{{1}发生碰撞时},它的坐标类似paletteRect
,超出了(10, 700)
图像尺寸。
您需要从鼠标x&中减去调色板在屏幕上的位置。 y coords:
palette