版本22和24间的区别 (跳过第2版)
于2006-10-11 17:44:37修订的的版本22
大小: 25643
编辑: czk
备注:
于2006-10-11 21:33:17修订的的版本24
大小: 20835
编辑: czk
备注:
删除的内容标记成这样。 加入的内容标记成这样。
行号 44: 行号 44:
{{{
行号 46: 行号 46:
}}}
行号 62: 行号 63:
      Surface.convert(Surface): return Surface
      Surface.convert(depth, flags=0): return Surface
      Surface.convert(masks, flags=0): return Surface
      Surface.convert(): return Surface
}}}
      Creates a new copy of the Surface with the pixel format changed. The new pixel format can be determined from another existing Surface. Otherwise depth, flags, and masks arguments can be used, similar to the pygame.Surface - pygame object for representing images call.

      If no arguments are passed the new Surface will have the same pixel format as the display Surface. This is always the fastest format for blitting. It is a good idea to convert all Surfaces before they are blitted many times.

      The converted Surface will have no pixel alphas. They will be stripped if the original had them. See Surface.convert_alpha - change the pixel format of an image including per pixel alphas for preserving or creating per-pixel alphas.
Surface.convert(Surface): return Surface
Surface.convert(depth, flags=0): return Surface
Surface.convert(masks, flags=0): return Surface
Surface.convert(): return Surface
}}}
创建一个像素格式不一样的新的Surface。新的像素格式可以由现存其它Surface确定,也可以由depth,flags或者masks决定。这些参数和pygame.Surface的参数类似。

如果没有参数,新的Surface会和display Surface的像素格式一样。这是画图最快的格式。转换所有需要多次blit的Surface是一个好主意。

转换出来的Surface不会有像素alpha。如果原来的Surface里面有,他们会被去掉。参看Surface.convert_alpha来保留或者创建每像素alpha。
行号 75: 行号 76:
{{{
行号 77: 行号 78:
}}}
行号 83: 行号 84:
{{{
行号 85: 行号 86:
}}}
行号 95: 行号 96:
{{{
行号 97: 行号 98:
行号 99: 行号 99:

      Set the current color key for the Surface. When blitting this Surface onto a destination, and pixels that have the same color as the colorkey will be transparent. The color can be an RGB color or a mapped color integer. If None is passed, the colorkey will be unset.

      The colorkey will be ignored if the Surface is formatted to use per pixel alpha values. The colorkey can be mixed with the full Surface alpha value.

      The optional flags argument can be set to pygame.RLEACCEL to provide better performance on non accelerated displays. An RLEACCEL Surface will be slower to modify, but quicker to blit as a source.
}}}
设置Surface的透明色。当把这个Surface blit到令一个Surface时候,和这个透明色颜色相同的像素会变成透明。color参数可以是RGB颜色或者是一个映射的整数。如果传送的是None,则Surface会没有透明色。

如果是有每像素透明的Surface,透明色会被忽略。透明色可以和Surface alpha混合使用。

可选的flags参数可以是pygame.RLEACCEL,用来在没有加速的时候提供更好的性能。设置了RLEACCEL的Surface作为源Surface blit更快,但是修改Surface的内容会更慢。
行号 110: 行号 110:
{{{
行号 112: 行号 112:

      Return the RGBA color value at the given pixel. If the Surface has no per pixel alpha, then the alpha value will always be 255 (opaque). If the pixel position is outside the area of the Surface an IndexError exception will be raised.

      Getting and setting pixels one at a time is generally too slow to be used in a game or realtime situation.

      This function will temporarily lock and unlock the Surface as needed.
       
}}}

返回指定像素的RGBA颜色值。如果Surface没有每像素alpha,alpha值总是255(不透明)。如果像素位置在Surface的区域以外,会引发一个IndexError异常。

在游戏和实时模拟中,一次取得和设置一个像素是很慢的。

这个函数会根据需要临时加锁和解锁Surface。
行号 123: 行号 123:
{{{
行号 125: 行号 125:

      Set the RGBA or mapped integer color value for a single pixel. If the Surface does not have per pixel alphas, the alpha value is ignored. Settting pixels outside the Surface area or outside the Surface clipping will have no effect.

      Getting and setting pixels one at a time is generally too slow to be used in a game or realtime situation.

      This function will temporarily lock and unlock the Surface as needed.
}}}

为一个像素设置RGBA或者映射的整数颜色值。如果Surface没有每像素alpha,alpha值会被忽略。对Surface区域之外或者剪切区域之外的像素设置颜色不会有任何效果。

在游戏和实时模拟中,一次取得和设置一个像素是很慢的。

这个函数会根据需要临时加锁和解锁Surface。
行号 134: 行号 135:
{{{
行号 136: 行号 137:
行号 138: 行号 138:

      Each Surface has an active clipping area. This is a rectangle that represents the only pixels on the Surface that can be modified. If None is passed for the rectangle the full Surface will be available for changes.

      The clipping area is always restricted to the area of the Surface itself. If the clip rectangle is too large it will be shrunk to fit inside the Surface.
}}}
每个Surface都有一个剪切区域。这个区域是个矩形,表示只有在这个矩形内的像素可以被修改。如果指定None作为矩形区域,则整个Surface都可以修改。

剪切区域总是在Surface本身的区域只内的。如果剪切区域比Surface的区域大,则会自动缩小到Surface区域之内。
行号 146: 行号 146:
{{{
行号 148: 行号 148:

      Return a rectangle of the current clipping area. The Surface will always return a valid rectangle that will never be outside the bounds of the image. If the Surface has had None set for the clipping area, the Surface will return a rectangle with the full area of the Surface.
}}}
返回Surface的当前剪切区域。一个Surface总是返回一个有效的矩形,不会超过图像的边界范围。如果Surface设置了None作为剪切区域,则Surface会返回整个Surface的区域。
行号 155: 行号 154:
{{{
行号 157: 行号 156:
}}}
行号 163: 行号 162:
{{{
行号 165: 行号 164:
}}}
行号 171: 行号 170:
{{{
行号 173: 行号 172:
}}}
行号 176: 行号 175:
= pygame.image =

image模块包含读取和保存图片的函数,也包括把Surfaces变成其它包可以使用的格式的函数。

注意,没有Image类。图片是作为Surface对象读入的。Surface类允许画线、设置像素、捕捉区域等操作。

image模块是pygame必须的一个模块,但是对于扩展部分的文件格式的支持是可选的。默认情况下,它只支持不压缩的BMP图像。当编译成完整的图像格式支持后,pygame.image.load函数可以支持如下类型:

    * JPG
    * PNG
    * GIF (non animated)
    * BMP
    * PCX
    * TGA (uncompressed)
    * TIF
    * LBM (and PBM)
    * PBM (and PGM, PPM)
    * XPM

保存图像只支持有限的格式。你可以保存为下列格式:

    * BMP
    * TGA
    * PNG
    * JPEG

存为PNG, JPEG格式在pygame 1.8中支持。

== pygame.image.load ==

从文件中读取一个图像。

pygame.image.load(filename): return Surface

pygame.image.load(fileobj, namehint=""): return Surface

从文件中读取一个图片。你可以传过去一个文件名,或者一个Python的文件对象。

pygame会自动确定文件的类型(比如GIF或者BMP),并创建一个新的Surface对象。某些情况下,需要知道文件的扩展名(比如GIF图像文件以.gif扩展名命名)。如果传递一个文件对象,你可能要把原来的文件名作为namehint参数传过去。

返回的Surface对象包含和文件中相同的颜色格式、透明色和alpha透明。你常常要调用Surface.convert函数来创建一个拷贝,使得图像在屏幕上画得更快。

对于alpha透明,比如.png图像,在读入后使用convert_alpha()方法来保留每个像素透明信息。

pygame并不是支持所有的图像格式。但是至少它支持不压缩的BMP格式。如果pygame.image.get_extended返回True,则你可以使用大部分的图像格式(包括png、jpg和gif)。


你应该使用os.path.join来保证兼容性。比如asurf = pygame.image.load(os.path.join('data', 'bla.png'))


== pygame.image.save ==

把图像保存到文件中

pygame.image.save(Surface, filename): return None

这个函数可以把Surface保存为BMP、TGA、PNG或者JPEG图像文件。如果文件扩展名不认识,默认保存为TGA格式。TGA和BMP格式都是非压缩的文件。

保存为PNG、JPEG格式在pygame1.8种支持。

== pygame.image.tostring ==

把图像转换为字符串。

pygame.image.tostring(Surface, format, flipped=False): return string

创建一个字符串,这个字符串可以在其它包中用fromstring方法转换回图像。某些Python图像包希望使用自底向上的图像格式(比如PyOpenGL)。如果你给flipped传送True,则字符串中表示的图像会上下翻转。

format参数可以是以下这些值。注意并不是只有8位的Surface才能使用P格式。其它的格式也能被所有Surface使用。同时也要注意,其它的图像包支持比pygame更多的图像格式。
 * P, 8bit palettized Surfaces
 * RGB, 24bit image
 * RGBX, 32bit image with unused space
 * RGBA, 32bit image with an alpha channel
 * ARGB, 32bit image with alpha channel first

== pygame.image.fromstring ==

从字符串创建一个新的Surface。

pygame.image.fromstring(string, size, format, flipped=False): return Surface

这个函数和pygame.image.tostring有类似的参数。size参数包括一对数字用来指定图像的高度和宽度。一旦新的Surface创建后,你就可以释放你的字符串了。

根据图像的大小和格式计算出来的大小必须和传过来的字符串大小一样。 否则,会导致一个异常。

参看pygame.image.frombuffer方法来更快的创建一个图像的方法。

== pygame.image.frombuffer ==

创建一个新的Surface,它的数据空间和一个字符串共享。

pygame.image.frombuffer(string, size, format): return Surface

插件一个新的Surface,它的像素数据直接从字符串中得到。这个方法和pygame.image.fromstring一样,但是不能够上下翻转原始数据。

这个函数比pygame.image.fromstring快很多,因为没有像素数据需要分配和拷贝。

TableOfContents

Surface

表示图像的pygame对象

pygame.Surface((width, height), flags=0, depth=0, masks=None): return Surface
pygame.Surface((width, height), flags=0, Surface): return Surface

pygame里的Surface是用来表示图像的对象。Surface有一定的大小和像素格式。如果是8bit像素格式的Surface,它还会用一个调色板映射到24比特颜色。

调用pygame.Surface可以创建表示图像的新对象。Surface会整个全是黑的。唯一需要指定的参数是大小。如果不指定其他参数,Surface的像素格式会与display Surface的像素格式尽量一致。

像素格式可以通过指定像素深度或者已有的Surface来控制。flags标志位参数是其他一些Surface选项的集合,你可以指定如下的标志

  • HWSURFACE, 在视频内存中创建图像
  • SRCALPHA, 像素格式中会包含一个alpha通道

这些参数都仅仅是一个请求,在实际中可能并不能实现。

高级用户可以组合一组颜色屏蔽位,masks是4个整数的集合,表示像素里的哪个位用来表示一种颜色。一般的Surface不需要masks参数。

Surface可以有一些额外的属性,比如alpha平面、透明色、源矩形剪切。这些功能主要影响一个Surface如何被blit到其它的Surface。如果可能的话,blit函数会尝试使用硬件加速,否则就会使用优化的软件blit方法。

pygame支持三种类型的透明:透明色(colorkey),Surface alpha和每像素alpha。Surface alpha可以和透明色(colorkey)混合使用,但是有像素alpha的图像不能够使用其它模式。透明色(colorkey)让一种颜色值透明。任何和这个颜色相同的像素都不会被画出来。Surface alpha值是单独一个值用来改变整个图像的透明度。Surface alpha值是255表示不透明,值是0表示全透明。

而每像素alpha是不一样的,它为每个像素保存了一个透明值。这种方法允许精确的控制透明效果,但是这种方法也是最慢的。每像素alpha不能和其它方法混用。

Surface支持对单个像素的访问。访问硬件surface的像素是比较慢的,推荐不要这样做。像素可以由get_at()和set_at()函数访问。用这些函数做一些简单的操作是很好的,但是做比较复杂的像素操作就比较慢了。如果你打算做很多像素级的工作,你最好使用pygame.surfarray模块,它可以把surface像多维数组一样使用(而且比较快)。

任何直接访问Surface的像素数据的函数都要求先锁定(lock())。这些函数可以自动调用lock()和unlock()完成加锁和解锁。但是如果一个函数被调用很多次,那么就会有很多多余的加锁和解锁操作。最好是在多次使用这个函数之前,手动锁定Surface,并在结束时手动解锁。所有的需要解锁的函数的文档里面都会这样说。记住,只在需要的时候才锁住Surface。

Surface的数据在内部是表示成一个数字,包含所有的颜色。使用Surface.map_rgb和Surface.unmap_rgb来在独立的红绿蓝值和Surface的内部表示值之间的转换。

一个Surface可以引用另一个Surface的一部分。这通过Surface.subsurface函数创建。改变任何一个Surface都会影响其它的Surface。

每个Surface包含一个剪切区域。默认情况下,剪切区域是整个Surface。如果改变了剪切区域,所有的画图操作都会限制在一个比较小的范围之内。

1. Surface.blit

把一个图像画到另一个上面

Surface.blit(source, dest, area=None, special_flags = 0): return Rect

把源Surface画到这个Surface上。画的位置可以由dest参数指定。dest可以是一对坐标值,表示源Surface的左上角在这个Surface上的坐标。dest也可以是一个矩形,矩形的左上角作为blit的位置,而矩形的大小不影响blit。

有一个可选的area矩形参数,可以用来指定只画源Surface的一部分。

一个可选的special_flags参数,可以是BLEND_ADD、BLEND_SUB、BLEND_MULT、BLEND_MIN、BLEND_MAX。将来也可能有其它特殊标记添加进来。

返回的矩形表示受影响的像素的区域,不包括目标Surface以外的像素,也不包括剪切区域以外的像素。

如果blit到一个8位的Surface上,像素的alpha值会被忽略。

special_flags是在pygame 1.8中新增的。

2. Surface.convert

改变图像的像素格式

Surface.convert(Surface): return Surface
Surface.convert(depth, flags=0): return Surface
Surface.convert(masks, flags=0): return Surface
Surface.convert(): return Surface

创建一个像素格式不一样的新的Surface。新的像素格式可以由现存其它Surface确定,也可以由depth,flags或者masks决定。这些参数和pygame.Surface的参数类似。

如果没有参数,新的Surface会和display Surface的像素格式一样。这是画图最快的格式。转换所有需要多次blit的Surface是一个好主意。

转换出来的Surface不会有像素alpha。如果原来的Surface里面有,他们会被去掉。参看Surface.convert_alpha来保留或者创建每像素alpha。

3. Surface.copy

创建一个Surface的拷贝

Surface.copy(): return Surface

创建一个Surface的复制品。新创建的Surface和原来的Surface有相同的像素格式、调色板和透明设置。

4. Surface.fill

用一个颜色填充Surface

Surface.fill(color, rect=None): return Rect

用一种颜色填充Surface。如果没有给定rect参数,整个Surface会被填充。rect参数会限制备填充的区域。填充区域同样受到Surface的剪切区域的影响。

颜色参数可以是RGB序列或者是颜色索引值。

这个函数会返回受影响的Surface区域。

5. Surface.set_colorkey

设置透明色colorkey

Surface.set_colorkey(Color, flags=0): return None
Surface.set_colorkey(None): return None

设置Surface的透明色。当把这个Surface blit到令一个Surface时候,和这个透明色颜色相同的像素会变成透明。color参数可以是RGB颜色或者是一个映射的整数。如果传送的是None,则Surface会没有透明色。

如果是有每像素透明的Surface,透明色会被忽略。透明色可以和Surface alpha混合使用。

可选的flags参数可以是pygame.RLEACCEL,用来在没有加速的时候提供更好的性能。设置了RLEACCEL的Surface作为源Surface blit更快,但是修改Surface的内容会更慢。

6. Surface.get_at

获得特定像素点的颜色值

Surface.get_at((x, y)): return Color

返回指定像素的RGBA颜色值。如果Surface没有每像素alpha,alpha值总是255(不透明)。如果像素位置在Surface的区域以外,会引发一个IndexError异常。

在游戏和实时模拟中,一次取得和设置一个像素是很慢的。

这个函数会根据需要临时加锁和解锁Surface。

7. Surface.set_at

设置特定像素点的颜色值

Surface.set_at((x, y), Color): return None

为一个像素设置RGBA或者映射的整数颜色值。如果Surface没有每像素alpha,alpha值会被忽略。对Surface区域之外或者剪切区域之外的像素设置颜色不会有任何效果。

在游戏和实时模拟中,一次取得和设置一个像素是很慢的。

这个函数会根据需要临时加锁和解锁Surface。

8. Surface.set_clip

设置Surface的剪切区域

Surface.set_clip(rect): return None
Surface.set_clip(None): return None

每个Surface都有一个剪切区域。这个区域是个矩形,表示只有在这个矩形内的像素可以被修改。如果指定None作为矩形区域,则整个Surface都可以修改。

剪切区域总是在Surface本身的区域只内的。如果剪切区域比Surface的区域大,则会自动缩小到Surface区域之内。

9. Surface.get_clip

获得Surface的当前剪切区域

Surface.get_clip(): return Rect

返回Surface的当前剪切区域。一个Surface总是返回一个有效的矩形,不会超过图像的边界范围。如果Surface设置了None作为剪切区域,则Surface会返回整个Surface的区域。

10. Surface.get_size

获得Surface的大小

Surface.get_size(): return (width, height)

返回Surface的像素高度和宽度

11. Surface.get_width

获得Surface的宽度

Surface.get_width(): return width

返回Surface的像素宽度

12. Surface.get_height

获得Surface的高度

Surface.get_height(): return height

返回Surface的像素高度

pygame.draw

在Surface上画一些简单的图形。这些函数可以在任何格式的Surface上使用。在硬件Surface上使用会比普通的软件Surface上慢。

大部分的函数都包括一个width参数来表示画笔的大小(即形状的边缘的宽度)。如果width是0则整个图形会被颜色填充。

所有的函数都有Surface剪切区域,它的操作会被限制在这个区域里面。这些函数返回一个矩形区域表示被改动的像素的范围。

大部分表示颜色的参数是一个RGB三元组,也可以使用RGBA四元组。如果Surface包含alpha,四元组中alpha值会被直接写入到Surface里面,画图函数并不会进行透明的绘画。颜色参数也可以是一个整数,可以映射到Surface的像素格式。

这些函数在操作时必须临时锁定Surface。如果有很多一系列的绘图操作,可以使用Surface的锁定和解锁操作来加速。

1. pygame.draw.rect

画一个矩形

pygame.draw.rect(Surface, color, Rect, width=0): return Rect

在Surface上画一个矩形。指定的Rect是矩形的区域。width参数是矩形框的粗细。如果width是0,整个矩形会被填充。

要记住的是,Surface.fill也可以画一个填充的矩形。实际上,Surface.fill在某些平台上可以用硬件加速。

2. pygame.draw.polygon

画一个有任意条边的图形

pygame.draw.polygon(Surface, color, pointlist, width=0): return Rect

在Surface上画一个多边形。pointlist参数是多边形顶点的列表。width参数是多边形的边的粗细。如果width是0,多边形是被填充的。

对于aapolygon,使用带closed参数的aalines。

3. pygame.draw.circle

围绕一个点画一个圆

pygame.draw.circle(Surface, color, pos, radius, width=0): return Rect

在Surface上画一个圆形。pos参数是圆的圆心,radius是半径大小。width参数是圆边的粗细,如果width是0圆会被填充。

4. pygame.draw.ellipse

在矩形区域中画一个椭圆的形状

pygame.draw.ellipse(Surface, color, Rect, width=0): return Rect

在Surface上画一个椭圆。给定的矩形区域是椭圆填充的区域。width是边的粗细。如果width是0,椭圆会被填充。

5. pygame.draw.arc

画椭圆的一部分

pygame.draw.arc(Surface, color, Rect, start_angle, stop_angle, width=1): return Rect

在Surface上画一个椭圆状的弧线。rect参数指定椭圆填充的矩形。两个角度参数指定起始和终止的角度(以弧度为单位),朝右为0度。width参数是弧线的粗细。

6. pygame.draw.line

画一条直线段

pygame.draw.line(Surface, color, start_pos, end_pos, width=1): return Rect

在Surface上画一条直线段。线段终点没有箭头,宽的线段终点是方形的。

7. pygame.draw.lines

画多条连续的线段

pygame.draw.lines(Surface, color, closed, pointlist, width=1): return Rect

在Surface上画一系列的直线。pointlist是一系列点的列表。如果closed参数是True,则在最后一点和第一点之间会画一条线段。

这个函数不会画终点箭头和中间连接头。线段有尖锐的拐角,粗的线段会有看上去不正确的拐角。

8. pygame.draw.aaline

画抗锯齿的线段

pygame.draw.aaline(Surface, color, startpos, endpos, blend=1): return Rect

在Surface上画一条抗锯齿的直线段。如果blend是True,则阴影部分是和原始像素混合而不是直接覆盖的。这个函数接受浮点数作为点的坐标。

9. pygame.draw.aalines

pygame.draw.aalines(Surface, color, closed, pointlist, blend=1): return Rect

画多条连续的线段,每个线段都是抗锯齿的。pointlist里面至少要两个点。closed参数如果是True,则在第一个点和最后一点之间会画一条直线。如果blend参数是True,则阴影部分是和原始像素混合而不是直接覆盖的。这个函数接受浮点数作为点的坐标。

pygame.font

font模块允许允许在新创建的Surface上画TrueType字体。这个模块是可选的,并依赖于SDL_ttf。你应该测试pygame.font是否可用,并在尝试使用前初始化它。

字体的大部分工作使用Font对象来实现。这个模块它自己仅有初始化函数和pygame.font.Font函数用来创建Font对象。

你可以使用pygame.font.SysFont从系统载入字体。有一些其它的函数用来帮助查找系统字体。

pygame自带一个默认的字体。这个字体总是可以用None作为字体名字被使用。

1. pygame.font.init

初始化font模块

pygame.font.init(): return None

这个方法会在pygame.init时自动调用。它初始化font模块。在使用这个模块的其他函数之前必须先初始化。

多次调用这个函数也不会有副作用。

2. pygame.font.quit

uninitialize font模块

pygame.font.quit(): return None

手动uninitialize SDL_ttf的字体系统。这个函数会被pygame.quit自动调用。

如果font模块没有被初始化,调用这个函数也不会有问题。

3. pygame.font.get_init

返回True如果font模块被初始化了

pygame.font.get_init(): return bool

测试font模块是否被初始化了。

4. pygame.font.get_default_font

得到默认字体的文件名

pygame.font.get_default_font(): return string

返回系统字体的文件名。这个不是文件的完整路径。这个文件通常可以在和font模块相同的目录中找到,但是它也可能在其它文档中。

5. pygame.font.get_fonts

获得所有可用的字体

pygame.font.get_fonts(): return list of strings

返回一个系统所有可用字体的列表。字体的名字会用小写,所有的空格和其它字符都被去掉了。这在大部分系统都可以用,但是某些系统找不到字体会返回一个空的列表。

6. pygame.font.match_font

在系统中查找一个特定的字体

pygame.font.match_font(name, bold=False, italic=False): return path

返回一个系统中字体文件的完整路径。如果bold或者italic参数是True,函数会尝试去查找正确的字体族。

字体的名字可以是逗号隔开的字体的列表。如果没有一个给定字体找到,函数返回None。

比如:

print pygame.font.match_font('bitstreamverasans')
# output is: /usr/share/fonts/truetype/ttf-bitstream-vera/Vera.ttf
# (but only if you have Vera on your system)

7. pygame.font.SysFont

从系统字体创建一个Font对象

pygame.font.SysFont(name, size, bold=False, italic=False): return Font

返回一个新建的从系统字体装载的Font对象。字体会对应请求的bold和italic标志。如果不能找到合适的系统字体,这个函数会载入缺省的pygame字体。字体名字可以是逗号隔开的字体名字的列表。

8. pygame.font.Font

从文件创建一个Font对象

pygame.font.Font(filename, size): return Font

pygame.font.Font(object, size): return Font

从给定的文件名或者python文件对象载入新的字体。size是字体的高度。如果文件名是None,pygame的默认字体会被载入。如果参数指定的字体不能载入,会引发一个异常。一旦字体创建后,字体的大小不能被改变。

Font对象主要用来把文字画成新的Surface对象。画的过程可以模拟黑体和斜体的效果,但是最好使用真正的斜体和黑体字体。被画文字可以使普通字符串,也可以是unicode串。

8.1. Font.render

在新的Surface上画出文字。

Font.render(text, antialias, color, background=None): return Surface

这个函数创建一个新Surface对象,它上面包含了画出来的文字。pygame没有提供直接在存在的Surface上画文字的方法,而必须采用Font.render来创建一个新的Surface,然后把它blit到其他Surface上。

文字只能包含一行,换行符不会被画出来。antialias抗锯齿参数如果是真的,字符会有光滑的边缘。color参数指定了文字的颜色(比如(0,0,255)为蓝色)。可选的background参数用来指定文字背景的颜色。如果没有指定background,背景是透明的。

返回的Surface的大小是包含文字的必须的大小。(和Font.size()一样。)如果text是空字符串,会返回一个空白的Surface,只有一个像素宽和一个字符的高度。

返回的Surface的类型依赖于background和antialias的类型。因为性能的原因,最好要知道图像是哪种类型的。如果没有使用antialias,返回的图像是带两个调色板的8位的图像。如果background是透明的,会设置一个透明色colorkey。抗锯齿的图像会使用24位RGB图像。如果背景是透明的,会使用像素alpha。

优化:如果你知道最后文字的背景是单一的颜色,并且文字是抗锯齿的,那么你可以通过指定背景色来改进性能。这使得图像通过透明色colorkey而不是alpha(这个要慢得多)来指定透明信息。

如果你画'\n'字符,一个未知的字符会被画出来,通常是一个矩形。你应该自己去处理多行字符串。

画字体不是线程安全的:一个时刻只能有一个线程在画文字。

8.2. Font.size

确定画文字需要的大小

Font.size(text): return (width, height)

返回画文字需要的大小。这个函数可以帮助确定文字的位置,也可以用来确定文字换行和其他布局效果。

注意,大部分字体都会对特定的字符使用字据调整。比如说字符串“ae”的宽度不总是和"a"+"e"的宽度一致。

8.3. Font.set_underline

控制文字是否有下划线

Font.set_underline(bool): return None

当开启这个选项, 所有的文字都会有下划线。不管字体多大,下划线总是只有一个像素的宽度。这个选项可以和粗体、斜体混合使用。

8.4. Font.get_underline

检查画出来的文字是否有下划线。

Font.get_underline(): return bool

当字体设置有下划线,这个函数返回真。

8.5. Font.set_bold

开启文字的伪粗体

Font.set_bold(bool): return None

开启伪粗体。这是对字体进行伸展而得到的伪粗体,用在很多字体上不好看。如果可能的话,应该载入一个真正的粗体。当这个选项开启后,字符会有不同的宽度。这个选项可以和斜体和下划线混合使用。

8.6. Font.get_bold

检查字体设置是否用粗体。

Font.get_bold(): return bool

如果字体设置了粗体,返回真。

8.7. Font.set_italic

设置字体的伪斜体

Font.set_bold(bool): return None

开启字体的伪斜体。这是对字体进行倾斜而得到的伪斜体,用在很多字体上不好看。如果可能的话,应该载入真正的斜体。当开启了斜体后,字符的宽度可能会不同。这个选项可以和粗体、下划线混合使用。

8.8. Font.get_italic

检查字体设置是否为斜体

Font.get_italic(): return bool

如果字体设置了斜体,则返回真。

8.9. Font.get_linesize

获得行的高度。

Font.get_linesize(): return int

返回一行文字的像素高度。当画很多行字符的时候,这个高度是两行间的间隔的推荐值。

8.10. Font.get_height

获取字体的高度。

  • Font.get_height(): return int

返回文字的实际像素高度。这是这种这种字体里的字符的平均高度。

8.11. Font.get_ascent

获得字体的ascent高度。

Font.get_ascent(): return int

返回字体的ascent像素高度。ascent是从字体的基线到字体顶部的像素高度。

8.12. Font.get_descent

获得字体的descent高度

Font.get_descent(): return int

返回字体的descent高度。descent是指从字体基线到字体底部的像素高度。

The end

Pygame图形接口基础 (2008-02-23 15:34:18由localhost编辑)

ch3n2k.com | Copyright (c) 2004-2020 czk.