OS X 上 Pygame 的抗锯齿颜色错误

2023-11-23

我在运行 OS X 的 Macbook Pro(非视网膜)上使用 Pygame。当我尝试创建抗锯齿线条或圆圈时,它似乎显示为错误的颜色。这是一个例子:

import sys, pygame, random, math
import pygame.gfxdraw

black = (0,0,0)
white = (255, 255, 255)
green = (0, 255, 0)


pygame.init()

size = width, height = 800, 600

screen = pygame.display.set_mode(size)

# make the background
background = pygame.Surface(screen.get_size())
#background.fill(black)
background.fill(white)

while 1:
    # handle single events
    for event in pygame.event.get():
        if event.type == pygame.QUIT: sys.exit()

        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_ESCAPE: sys.exit()

    screen.blit(background, (0, 0))

    pygame.draw.line(screen, green, [0, 0], [50,30], 1)
    pygame.draw.aaline(screen, green, [0, 50],[50, 80], True)

    pygame.draw.circle(screen, black, [100, 100], 10)
    pygame.gfxdraw.aacircle(screen, 100, 130, 10, black)

    pygame.display.flip()

这导致:

color example


尽管搜索了 pygame 源代码,但仍无法找到原因。

不过,我确实想出了一个解决方法。实际上是两个。

似乎有一个错误pygame.gfxdraw当蓝色值为 0 时,会导致 OS X 中颜色混乱的模块。如果您更改了black到 (0,0,1),圆圈看起来已经好多了,但仍然带有轻微的蓝色调。将其更改为 (0,0,2),它会显示几乎全黑。对我来说没什么意义,但它有效。

Edit:这是针对不包含任何蓝色的背景颜色。看来,在包含 >0 蓝色的背景 RGB 上,圆圈至少需要一定量的蓝色才能防止出现错误。例如,要在 (50,50,50) 背景上获得黑色圆,我能得到的最接近的结果是使用 (0,0,50) 作为圆。任何较低的蓝色量都会导致亮蓝色伪影。

添加蓝色对修复没有帮助pygame.draw.aaline不过的行为。这一定是一个单独的错误。然而,pygame.gfxdraw.line也是抗锯齿的。改为使用该方法,更改green到 (0,255,1),青色线现在将变为绿色。

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OS X 上 Pygame 的抗锯齿颜色错误 的相关文章

随机推荐

  • 如果 import 语句只包含文件名,python 如何查找模块文件?

    我到处都看到 Python 代码使用以下命令导入模块import sys or import mymodule 如果没有提供目录或路径 解释器如何找到正确的文件 http docs python org 3 tutorial modules
  • Java 相当于 unsigned long long?

    在 C 中 我喜欢通过以下方式访问 64 位无符号整数 unsigned long long int 或通过uint64 t 现在 我知道 Java 中的 long 是 64 位 然而 他们已经签署了 是否有 unsigned long 长
  • UIScrollView contentOffset 在另一个视图推送后发生变化

    我有一个UIViewController在 Interface Builder 中 我添加了一个UIScrollView to the UIView 它有一个contentOffset属性等于 0 0 但是当我滚动UIScrollView到
  • 枚举类可以转换为基础类型吗?

    有没有办法转换enum class字段到基础类型 我以为这会是自动的 但显然不是 enum class my fields unsigned field 1 unsigned a my fields field 该分配被 GCC 拒绝 er
  • 是否可以生成独立的 haskell 可执行文件

    假设架构相似 有没有办法生成独立的 haskell 可执行文件以在不同的 Linux 机器上运行 抱歉 我应该说得更清楚 其他机器上可能没有安装 ghc 有点像我正在寻找的 python pyinstaller 您可以使用标志 static
  • java中如何将时间四舍五入到最接近的一刻钟?

    鉴于今天的时间 例如2 24PM 如何让它四舍五入到 2 30PM 同样 如果时间是下午 2 17 我如何让它四舍五入到下午 2 15 Rounding 您需要使用模来截断刻钟 Date whateverDateYouWant new Da
  • 标准库中的 C++11 值和对象示例?

    在 C 11 3p3 中 它指出 一个实体是一个value object 引用 函数 枚举器 类型 类成员 模板 模板特化 命名空间 参数包或此 在 17 6 1 1p1 中指出 C 标准库提供了以下类型实体的定义 宏 values 类型
  • 如何获取今天午夜的 NSDate 对象?

    获取代表当天午夜的 NSDate 对象的最有效方法是什么 iOS 8 中的新 API iOS 8 在 NSCalendar 上包含一个新方法 称为日期开始日 这真的很容易使用 let startOfToday NSCalendar curr
  • Android:无法实例化活动/ClassNotFoundException

    我最近向市场发布了一个应用程序 现在我收到一些用户的错误 该应用程序可能会在启动时崩溃 不幸的是 我无法直接联系他 并且该应用程序在模拟器和我的手机 以及一些朋友的手机 上运行良好 编辑 我想这种情况发生在不止一个用户身上 因为我在市场上收
  • 如何使用Android中的下载管理器将下载的图像存储在内部存储中

    如何使用下载管理器将图像或 mp3 文件保存在内部存储中 Code public void StartDownload String path ContextWrapper cw new ContextWrapper context Fil
  • 检查Android系统设置中是否启用了“自动更新”

    是否可以通过编程方式检查这一点 设置 gt 关于设备 gt 软件更新 gt 自动更新 自动检查更新 None
  • moment.js 从格式数组进行日期验证

    我需要测试输入的日期格式是否正确 我想接受多种日期格式 因此我创建了一个验证函数来测试至少一种格式是否正确 在这种情况下返回 true 我使用 moment js 来测试日期 当我简单地输入硬编码字符串日期格式的条件时 该函数可以正常工作
  • 为什么在 WiX / MSI 设置中限制自定义操作的使用是个好主意?

    为什么在 WiX MSI 设置中限制自定义操作的使用是个好主意 部署是大多数开发的关键部分 请给此内容一个机会 我坚信 通过应用程序设计的微小改变 可以显着提高软件质量 使部署更符合逻辑 更可靠 这就是这个 答案 的全部内容 软件开发 这是
  • 为什么我的 EF Code First 预生成视图没有效果?

    我的上下文中有大约 300 个 DbSet 应用程序加载后的第一个查询 索引字段上的 FirstOrDefault 需要大约 40 秒 为了改进这一点 我尝试使用此处的 T4 模板在 EF 4 3 1 Code First 中使用预生成的视
  • 类型错误:callback.apply 不是函数(Node.js 和 Mongodb)

    当我添加 upsert true 行时 出现以下错误 类型错误 callback apply 不是函数 on routes that end in users competitorAnalysisTextData router route
  • 无法获取 $_SESSION 变量

    In Log in php I have email POST email pass POST pass SESSION type user SESSION email email SESSION pass pass header loca
  • 从 GitHub 删除已关闭的拉取请求

    我不小心发出了错误的拉取请求 最终自己关闭了请求 它现在处于关闭状态 但可以通过直接 URL 访问并显示在我的活动栏上 有没有办法完全删除拉取请求 使其无法再通过 URL 访问或显示在您的活动历史记录中 您无法删除拉取请求yourself
  • 嵌套菜单(子菜单)

    我正在尝试实现子菜单 嵌套菜单 值得一提的是 我正在使用 Hydra 组件 并且之前没有 Redux 的经验 因为这个特定问题 几天前开始学习它 我已按照material ui 上提供的嵌套列表示例https material ui com
  • 如果没有“function”关键字,这个对象方法定义如何工作?

    我无意中遗漏了这一点 发现了这一点function关键词 通常情况下foobar下面模块中的方法将声明为foobar function arg1 但有趣的是 以下内容至少在某些浏览器中有效 例如Chrome版本44 0 2403 157 m
  • OS X 上 Pygame 的抗锯齿颜色错误

    我在运行 OS X 的 Macbook Pro 非视网膜 上使用 Pygame 当我尝试创建抗锯齿线条或圆圈时 它似乎显示为错误的颜色 这是一个例子 import sys pygame random math import pygame g