我正在使用pygame制作图像编辑器,我想知道是否可以将鼠标光标更改为更适合画笔(例如圆形或矩形)的画笔。 Pygame有一种非常奇怪的方式,我不确定它会非常好用。有没有办法可以写入位图然后使用它?
如果有一种方法可以通常使用Python,我认为这也会有用。
答案 0 :(得分:14)
另一种选择是简单地hide光标,load您喜欢的任意位图,draw每帧where the cursor is。
答案 1 :(得分:5)
您可以使用pygame.cursors.load_xbm在PyGame中加载游标 - 这只是黑白游标,当然,每个its docs(我引用)的PyGame有详细记录的限制:
Pygame只支持黑色和白色 系统的游标。
答案 2 :(得分:0)
由于@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程序为光标提供任何类型的位图。将“单击”热点放置在正确的位置可能会有些棘手,但这可以通过设置透明光标,使热点位于与自定义位图匹配的位置来实现。有关详细信息,请参见manual。
# 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))
我不确定我对多色光标的感觉,但是至少有可能。
答案 3 :(得分:0)
您也可以只加载图像来代替绘制图像。 例如:
cursor = pygame.image.load('CURSOR IMAGE FILE HERE')
pygame.mouse.set_visible(False) # hide the cursor
coord = pygame.mouse.get_pos()
#write this in the loop
screen.blit(cursor, coord)
如果只想将其替换为形状,则可以执行以下操作:
pygame.mouse.set_visible(False) # hide the cursor
coord = pygame.mouse.get_pos()
pygame.draw.(shape here)(screen, (color), (coord, width, height))
希望这对您有帮助!