代码之家  ›  专栏  ›  技术社区  ›  SapphireSun

从位图设置鼠标光标

  •  12
  • SapphireSun  · 技术社区  · 14 年前

    我正在使用pygame制作一个图像编辑器,我想知道是否可以将鼠标光标更改为更适合画笔的对象(例如圆形或矩形)。 Pygame有一种非常奇怪的方法,我不确定它是否能很好地工作。有什么方法可以写入位图然后使用它吗?

    如果有一种方法可以在一般情况下使用Python,我想这也可以。

    3 回复  |  直到 6 年前
        1
  •  14
  •   Mizipzor    14 年前

    另一种选择是 hide 光标, load 您喜欢的任意位图和 draw 它的每一帧 where the cursor is .

        2
  •  5
  •   Alex Martelli    14 年前

    在Pygame中,可以使用 pygame.cursors.load_xbm --当然,这只是黑白光标,这是对Pygame的一个很好的限制。 its docs (我引用):

    pygame只支持黑白 系统的光标。

    对于XBM格式的文档,请参见例如 here . 您可以根据 its docs .

        3
  •  0
  •   Kingsley    6 年前

    由于@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))
    

    我不确定我对多色光标的感觉,但至少这是可能的。