python - 向下循环鼠标按钮以绘制线条
问题描述
需要用 mousebuttondown 画线而不是点
当单击鼠标程序绘制点时,我假设需要另一个循环来在按住鼠标按钮的情况下绘制线条。
while keep_going:
for event in pygame.event.get():
if event.type == pygame.QUIT:
keep_going = False
if event.type == pygame.MOUSEBUTTONDOWN:
spot = event.pos
pygame.draw.circle(screen, GREEN, spot, radius)
pygame.display.update()
我想在我的窗口中画线而不是点。
解决方案
使用pygame.draw.lines
, 通过线连接点列表。
如果释放鼠标按钮,则将当前鼠标位置附加到列表中:
if event.type == pygame.MOUSEBUTTONUP:
points.append(event.pos)
绘制点列表,如果列表中有超过 1 个点:
if len(points) > 1:
pygame.draw.lines(screen, (255, 255, 255), False, points, width)
从列表中的最后一点到当前鼠标位置画一条“橡皮筋”:
if len(points):
pygame.draw.line(screen, (255, 255, 255), points[-1], pygame.mouse.get_pos(), width)
看简单的例子:
run = True
width = 3
points = []
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if event.type == pygame.MOUSEBUTTONUP:
points.append(event.pos)
screen.fill(0)
if len(points) > 1:
pygame.draw.lines(screen, (255, 255, 255), False, points, width)
if len(points):
pygame.draw.line(screen, (255, 255, 255), points[-1], pygame.mouse.get_pos(), width)
pygame.display.flip()
推荐阅读
- api - Gmail API 返回“超出每日限制”。错误
- flutter - 如何取消在颤动中打开和关闭导航抽屉的动画?
- reactjs - 如何在 create-react-app 中关闭生产构建和使用开发模式?
- python - 将数据框导出到不同的 CSV,每个 1000 行
- scala - repartitionAndSortWithinPartitions & 删除单次随机播放的重复项
- html - 如何在现有的 swagger-ui.html 文件中进行自定义
- sql - FAILED:执行错误,从 org.apache.hadoop.hive.ql.exec.mr.MapRedTask 返回代码 2 (state=08S01,code=2)
- php - Laravel:方法 Illuminate\Auth\SessionGuard::admin 不存在
- c# - NLog:为什么 BufferingWrapper 似乎没有缓冲日志条目
- ruby-on-rails - 使用 axlsx 流式下载