Pygame 从位图设置鼠标光标
我正在用pygame制作一个图像编辑器,想知道是否可以把鼠标光标换成更合适的样子,比如圆形或矩形,这样更适合画刷使用。
不过,pygame处理这个问题的方法有点奇怪,我不太确定这样做是否有效。有没有办法让我写一个位图,然后用这个位图呢?
如果有其他Python的方法也可以,那也行。
4 个回答
3
因为@SapphireSun在评论中提到想知道其他方法,所以我想分享一个不同的答案,那就是手动绘制光标。我猜这也是@Mizipzor在他的回答中提到的,所以这可能只是对他想法的进一步说明。
首先要隐藏鼠标光标,然后每次更新屏幕时,手动“绘制”光标:
pygame.mouse.set_visible(False) # hide the cursor
# Image for "manual" cursor
MANUAL_CURSOR = pygame.image.load('finger_cursor_16.png').convert_alpha()
# In main loop ~
...
# paint cursor at mouse the current location
screen.blit( MANUAL_CURSOR, ( pygame.mouse.get_pos() ) )
这个方法让PyGame程序可以使用任何类型的光标图像。可能在设置“点击”热点位置时会有点麻烦,但可以通过设置一个透明的光标来解决,确保热点位置和自定义图像的位置一致。具体细节可以查看手册。
# transparent 8x8 cursor with the hot-spot at (4,4)
pygame.mouse.set_cursor((8,8),(4,4),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0))
我对多色光标的看法不太确定,但至少这是可能的。
6
在PyGame中,你可以使用 pygame.cursors.load_xbm 来加载光标。不过要注意,这个方法只能加载黑白光标,这是PyGame的一个限制,具体可以在 官方文档 中找到相关说明(我引用一下):
PyGame只支持黑白光标。