当前位置: 首页 > 面试题库 >

在pygame中绘制一个透明矩形

姜煌
2023-03-14
问题内容

如何绘制具有Alpha颜色的矩形?我有:

windowSurface = pygame.display.set_mode((1000, 750), pygame.DOUBLEBUF)
pygame.draw.rect(windowSurface, pygame.Color(255, 255, 255, 128), pygame.Rect(0, 0, 1000, 750))

但是我希望白色矩形的透明度为50%,但是Alpha值似乎没有起作用。


问题答案:

pygame.draw函数将不使用Alpha绘制。该文件说:

大多数参数接受RGB三元组的color参数。这些也可以接受RGBA四联体。如果Alpha值包含像素Alpha,则它将直接写入Surface,但是draw函数不会透明地绘制。

您可以做的是创建第二个曲面,然后将其调高到屏幕上。Blitting将执行alpha混合和颜色键。另外,您可以在表面级别(更快和更少的内存)或像素级别(更慢但更精确)指定alpha。您可以执行以下任一操作:

s = pygame.Surface((1000,750))  # the size of your rect
s.set_alpha(128)                # alpha level
s.fill((255,255,255))           # this fills the entire surface
windowSurface.blit(s, (0,0))    # (0,0) are the top-left coordinates

要么,

s = pygame.Surface((1000,750), pygame.SRCALPHA)   # per-pixel alpha
s.fill((255,255,255,128))                         # notice the alpha value in the color
windowSurface.blit(s, (0,0))

请记住,在第一种情况下,您绘制的任何其他内容s都会使用您指定的alpha值变白。因此,例如,如果您使用它来绘制覆盖控件,则使用第二种方法可能更好。

另外,请考虑使用pygame.HWSURFACE创建硬件加速的曲面。

在pygame网站上查看Surface文档,特别是Intro。



 类似资料:
  • 本节课通过绘制一个矩形边框效果,对WebGL整个渲染流程有一个简单认知。 学习建议 学习本节课,建议先结合注释看看案例源码,对于不熟悉的WebGL API可以在MDN搜索文档,不过刚开始学习,没必要去掌握每一个WebGL API,把主要精力放在理解WebGL的整个渲染流程上面,如果你能建立渲染管线的概念,自然对WebGL系统会有一个基本的认知。 源码体验测试 //类型数组构造函数Float32Ar

  • 我正在尝试脚本创建视频使用ImageMagick创建一些覆盖,然后放在一个视频的顶部。 如果我尝试直接使用ImageMagick创建的图像,透明度会被绘制为不透明。 我已经使用ImageMagick绘制命令创建了一个透明的PNG。当加载到GIMP中并进行检查时,PNG具有alpha通道,并且每个透明像素看起来具有透明度:RGBA=0,0,0,0 我可以通过获取覆盖图像,在GIMP中加载它,然后选择

  • 对于需要图形分层的应用,经常需要处理透明度。本节,我们将学习如何使用全局透明度设置图形的透明度。 图2-5 绘制透明图形 绘制步骤 按照以下步骤,在一个不透明的矩形之上,绘制一个透明的圆: 1. 定义2D画布上下文: window.onload  = function(){ var canvas  = document.getElementById("myCanvas"); var co

  • 我正在编写一个可视化洞穴的OpenGL程序,所以当我可视化地表地形时,我希望它是透明的,这样你就可以看到下面的洞穴了。我假设我可以将来自数字高程模型的数据归一化为一个网格,该网格以规则的间距对准x/z轴,并将每个网格单元格渲染为两个三角形。使用对齐的网格,我可以避免在应用画家的算法时进行排序的成本(以确保适当的透明度效果);相反,我可以逐行呈现单元格,从最远的行和每行最远的单元格开始。 这一切都很

  • 问题内容: 我想在另一幅图像上绘制部分透明的图像(在物体上形成阴影)。我目前正在使用Java的Graphics2D类进行渲染,有人告诉我将合成设置为AlphaComposite,但这仅将其设置为完全透明。 我可以使用当前设置进行此操作吗?我必须怎么做才能解决此问题? 这是我被告知可以使其部分透明的代码: (顺便说一句,我正在使用png图像) 这是您的sscce(它们都在不同的类中,但是为了简单起见

  • 问题内容: 我想在PDFBox中用透明线绘制线条和多边形。这是一些有关如何绘制蓝线的示例代码,但是我无法弄清楚更改颜色的Alpha值。 问题答案: 您不能使用的alpha值,因为PDFBox仅使用RGB值。根据它的javadoc 只是: 设置描边颜色,指定为RGB。 一种选择是将背景色设置为描边色,以使线条不可见。 注意- 不可见!=透明(因此您不会获得透视效果)