トップへ戻る Cdrom || Color || Cursors || Display || Draw || Event || Examples || Font || Gfxdraw || Image || Joystick || Key || Locals || Mixer || Mouse || Movie || Music || Overlay || Pixelarray || Pygame || Rect || Scrap || Sndarray || Sprite || Surface || Surfarray || Tests || Time || Transform
pygame.Surface
    画像を描写するために使用するpygameのクラス
    pygame.Surface((width, height), flags=0, depth=0, masks=None): return Surface
    pygame.Surface((width, height), flags=0, Surface): return Surface
      Surface.blit - 画像を他の画像上に描写します。
      Surface.convert - 画像のピクセル形式を変更します。
      Surface.convert_alpha - ピクセル単位の透明度を保持したまま画像のピクセル形式を変更します。
      Surface.copy - Surfaceのコピーを新規に作成します。
      Surface.fill - Surfaceを一色で塗りつぶします。
      Surface.scroll - Surface上に描写された画像の表示位置を移動させます。
      Surface.set_colorkey - Surfaceの透過色を設定します。
      Surface.get_colorkey - Surfaceの透過色を取得します。
      Surface.set_alpha - Surface画像全体の透明度を設定します。
      Surface.get_alpha - Surfaceの透明度を取得します。
      Surface.lock - ピクセルを編集するためにSurfaceの保存されているメモリーをロックします。
      Surface.unlock - ピクセルの編集後にSurfaceが保存されているメモリーのロックを解除します。
      Surface.mustlock - このSurfaceの編集にロックが必要がどうかを確認します。
      Surface.get_locked - Surfaceが現在ロックされているかどうかを確認します。
      Surface.get_locks - Surfaceに対して行われた全てのロック情報を取得します。
      Surface.get_at - 指定したピクセル一点の色情報を取得します。
      Surface.set_at - 指定したピクセル一点の色情報を設定します。
      Surface.get_palette - 8bit Surfaceのカラーインデックスパレットを取得します。
      Surface.get_palette_at - パレットの指定した位置にある色を取得します。
      Surface.set_palette - 8bit Surfaceのカラーインデックスパレットを設定します。
      Surface.set_palette_at - 8bit Surfaceのパレット上の指定した位置に色を設定します。
      Surface.map_rgb - 色情報を、その色情報に紐づけされたカラー定数へ変換します。
      Surface.unmap_rgb - カラー定数を、紐づけ先の色情報に変換します。
      Surface.set_clip - Surfaceの描写可能領域を設定します。
      Surface.get_clip - Surfaceの描写可能領域を取得します。
      Surface.subsurface - オリジナルのSurfaceを参照するSurfaceを新規作成します。
      Surface.get_parent - subsurfaceのオリジナルSurfaceを取得します。
      Surface.get_abs_parent - subsurfaceの大元となるオリジナルSurfaceを取得します。
      Surface.get_offset - subsurfaceがオリジナルSurface内のどの位置を参照しているか調べます。
      Surface.get_abs_offset - subsurfaceが大元となるオリジナルSurface内のどの位置を参照しているか調べます。
      Surface.get_size - Surfaceの大きさを取得します。
      Surface.get_width - Surfaceの幅を取得します。
      Surface.get_height - Surfaceの高さを取得します。
      Surface.get_rect - Surfaceが存在する範囲のRect値を取得します。
      Surface.get_bitsize - Surfacが使用するピクセル形式のビット深度を取得します。
      Surface.get_bytesize - Surfaceのピクセル一個あたりの使用するバイト数を取得します。
      Surface.get_flags - Surfaceで設定されているflagを取得します。
      Surface.get_pitch - Surfaceのピクセル1行ごとに使用されるバイト数を取得します。
      Surface.get_masks - タプル型の(赤,緑,青,透明度)形式色情報と整数型のカラー定数を相互に変換する際に使われるビットマスク
      Surface.set_masks - タプル型の(赤,緑,青,透明度)形式色情報と整数型のカラー定数を相互に変換する際に使われるビットマスクを設定します。
      Surface.get_shifts - タプル型の(赤,緑,青,透明度)形式色情報と整数型のカラー定数を相互に変換する際に使われるビットシフト
      Surface.set_shifts - タプル型の(赤,緑,青,透明度)形式色情報と整数型のカラー定数を相互に変換する際に使われるビットシフトを設定します。
      Surface.get_losses - タプル型の(赤,緑,青,透明度)形式色情報と整数型のカラー定数を相互に変換する際に使われるビットの値
      Surface.get_bounding_rect - データが保有されている最小範囲を調べます。
      Surface.get_buffer - Surfaceのピクセル編集用に確保されるバッファ領域を取得します。

    pygameのSurfaceクラスは画像を表示するために使用します。Surfaceクラスは固定の解像度とピクセル形式を持ちます。8ビットピクセル形式のSurfacesはカラーパレットを使用して24bitカラーで描写されます。

    pygame.Surfaceを実行すると新規に画像オブジェクトを作成します。作成されたSurfaceは全面が黒一色で初期化されます。作成時に必ず設定しなければならない引数はSurfaceのサイズだけです。 サイズ以外の引数を設定しなかった場合、 Surfaceはディスプレイに合わせた最適の形式で作成されます。

    Surfaceのピクセル形式は、作成時に引数として渡されるビット深度や既存Surfaceによって決定されます。 flags引数ではSurfaceに備わっている他の機能をビットマスク方式で設定します。下記のflags値を組み合わせて設定することができます:

      HWSURFACE:ハードウェア側のメモリに画像を作成します。
      SRCALPHA:ピクセル単位で透明度を設定できる形式です。
    

    上記flags引数はあくまで要求を出すだけなので、ディスプレイやピクセル形式によっては指定した設定が適用されないこともあります。

    上級者であればdepth引数とmasks引数を組み合わせて設定することができます。 The masks are a set of 4 integers representing which bits in a pixel will represent each color. 普通にSurfaceを使うのであればmasks引数を設定する必要はありません。

    Surfaceは他にも透明度や透過色、描写可能領域といった多くの属性を設定することができます。 これらの機能は主にSurfaceに描写されている画像を他のSurface上にコピー描写する時に影響を与えます。この画像コピー処理はハードウェアの処理機能を使用できる場合はそちら使用し、使用できない場合は非常に高速化されているソフトウェアの処理機能を使用します。

    Pygameでは3種類の透過処理が用意されています: 色の透過、 Surfaceの透過、ピクセルの透過です。 色の透過処理はSurfaceの透過処理と組み合わせることができますが、ピクセル透過処理を行った画像に他の透過処理を組み合わせて使うことはできません。色の透過処理では、一つの色のみが透明になります。指定された色と同じ色のピクセルは描写されません。Surfaceの透明度は、 Surface上に描写されている画像全体の透明度を表します。Surfaceの透明度が255の場合だとSurface上の画像は完全な状態で描写され、透明度が0の時は透明状態で描写されます。

    ピクセル透過の場合はピクセル一つ一つが透明度を持つため、上記二つの処理とは異なります。これは最も精密な透明効果処理ですが、同時に最も遅い透明効果処理でもあります。 ピクセル透過は色の透過やSurface透過と組み合わせて使うことができません。

    Surfaceクラスにはピクセルの編集を手助けする機能があります。ハードウェア上でピクセルを編集する方法は遅いためあまりお勧めできません。get_at()命令やset_at()命令を使用することでピクセルの編集ができます。これらの処理は単純な編集を行う場合には適していますが、大量のピクセルを同時に編集する時には処理が遅くなってしまいます。 もし大量のピクセルを処理したいのなら、 pygame.surfarrayモジュールを使用するのがお勧めです。pygame.surfarrayモジュールはSurfaceを大規模な多次元配列として扱います。(とても速いです。)

    ピクセル編集命令を使用してSurfaceのピクセルデータを直接編集する場合は、編集するSurfaceをlock()命令でロックする必要があります。それらの命令実行時には特に何もしなくても自動でSurfaceのロックやロック解除を行われます。しかしそうした命令が一度にたくさん実行されると、Surfaceロック・ロック解除処理が多すぎて大量のオーバーヘッド負荷がかかってしまいます。大量のピクセル編集命令を実行する前にはSurfaceを手動でロックし、処理が終わった時にロックを解除するのがよいでしょう。Surfaceのロックが必要な命令はリファレンスにその旨が書かれています。必要な時だけSurfaceをロックするよう心掛けてください。

    Surfaceのピクセルは単一数値情報として内部に記録されています。その数値情報とは、ピクセルが持つ(赤の輝度,緑の輝度,青の輝度)といったRGBA形式色の情報を単一数値にエンコードしたものです。Surface.map_rgb命令とSurface.unmap_rgb命令を使えば、(赤の輝度,緑の輝度,青の輝度)形式の色情報と、Surface向けにエンコードされた単一数値の色情報を相互に変換することができます。

    またSurfaceは別のSurfaceの指定した範囲を参照することができます。この参照範囲は Surface.subsurface命令で作成します。元のSurfaceと参照範囲Surfaceにおいては、一方のSurfaceを変更するともう一方のSurfaceも同じように変更されます。

    全てのSurfaceは描写可能領域があります。既定では描写可能領域はSurfaceの全ての範囲です。この描写可能領域を変更すれば、特定の範囲に絞った描写処理を行うことができます。



    Surface.blit
      画像を他の画像上に描写します。
      Surface.blit(source, dest, area=None, special_flags = 0): return Rect

      Surface上にソース画像を描写します。dest引数を使用して描写位置を設定することができます。 dest値はソース画像の左上隅が置かれる(x座標,y座標)を表します。dest値の代わりに、画像を描写する四角範囲(x座標,y座標,幅,高さ)のrect値を引数として渡すこともできます。rect値として設定した画像描写範囲の大きさを、ソース画像より広く設定してしまったり逆に狭く設定してしまった場合でも、画像は正常に描写されます。

      dest値に加えて、area値にも同様の四角範囲を設定することができます。このarea値は、ソース画像の中から一部分だけを切り取って描写したい時に、その切り取る描写範囲として設定します。

      オプションで設定できるspecial_flags引数は、pygameのver1.8.0では BLEND_ADD, BLEND_SUB, BLEND_MULT, BLEND_MIN, BLEND_MAXが追加され、ver1.8.1では BLEND_RGBA_ADD, BLEND_RGBA_SUB, BLEND_RGBA_MULT, BLEND_RGBA_MIN, BLEND_RGBA_MAX BLEND_RGB_ADD, BLEND_RGB_SUB, BLEND_RGB_MULT, BLEND_RGB_MIN, BLEND_RGB_MAXが追加され、将来的には他にも様々なspecial_flags引数を追加する予定です。

      この処理の影響を受ける範囲がrect型の戻り値として返されます。Surfaceの枠外や描写可能領域外は、戻り値の範囲から除外されます。

      8bitのSurfaceに画像を描写する場合。ピクセルの透過処理は適用されません。

      special_flags引数はpygameのver1.8で新規に実装されました。

      透過色やblanket alphaを設定しているSurfaceでは、Surface自身にSurfaceの画像を描写する場合と、他のSurfaceにSurfaceの画像を描写する場合とでは表示される色がやや異なってきます。



    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を引数として設定することで、新規作成されるSurfaceのピクセル形式を決定することができます。それ以外にも、 pygame.Surfaceで新規にSurfaceを作成する時と同じように、ビット深度やflags引数、maskflags引数を使用することによってピクセル形式を設定できます。

      何も引数を定しなかった場合は、SurfaceはディスプレイのSurfaceと同じピクセル形式になります。この方法を行うと、常に使用ディスプレイ環境での画像描写に最も高速化された形式となります。画像描写処理を行う前には、Surface.convert()命令でピクセル形式を最適な状態に変更するとよいでしょう。

      ピクセル変換処理を行ったSurfaceは、ピクセルの透明度が0の状態です。変換前のSurfaceにピクセルの透明度が設定されていた場合、その透明度は消去されます。ピクセルの透明度を保持したままの変換や、変換時にピクセルの透明度も設定する場合は Surface.convert_alpha を参照してください。



    Surface.convert_alpha
      ピクセル単位の透明度を保持したまま画像のピクセル形式を変更します。
      Surface.convert_alpha(Surface): return Surface
      Surface.convert_alpha(): return Surface

      任意のピクセル透明度でSurfaceのコピーを新規に作成します。これによって作成されたSurfaceは、設定されたピクセル透明度で最も早くコピー描写ができる形式のものになります。引数に既存Surfaceを設定しなかった場合、作成されるSurfaceは現在のディスプレイ環境でのコピー描写に最適化された形式のものとなります。

      Surface.convert 命令とは違い、作成された画像のピクセル形式は元画像と完全に同じものにはなりません。しかし、それは透明度を考慮したうえで高速なコピー描写用に最適化されたものとなっています。

      ※原文では「任意のピクセル形式でSurfaceのコピーを新規に作成します(Creates a new copy of the surface with the desired pixel format)」と書かれていますが、誤りの可能性があるので「ピクセル形式(pixel format)」を「ピクセル透明度(pixel alpha)」に読み替えています。



    Surface.copy
      Surfaceのコピーを新規に作成します。
      Surface.copy(): return Surface

      Surfaceのコピーを新規に作成します。これによって作成されたSurfaceでは、ピクセル形式、カラーパレット、透明度などの設定はコピー元のSurfaceと全く同じものとなります。



    Surface.fill
      Surfaceを一色で塗りつぶします。
      Surface.fill(color, rect=None, special_flags=0): return Rect

      Surfaceを一色で塗りつぶします。rect引数を設定しなかった場合はSurface全体が塗りつぶされます。rect引数を設定すると塗りつぶす部分を特定の範囲のみに制限することができます。また、この塗りつぶし処理が適用されるのは描写可能領域内に限定されます。

      color引数には(赤,緑,青)形式の値、(赤,緑,青,透明度)形式の値、 (赤,緑,青,透明度)形式の値と紐付けされたカラー定数などが設定できます。(赤,緑,青,透明度)形式で設定した場合でも、Surfaceがピクセル単位の透過に対応していないと透明度は無視されてしまいます。 (Surfaceをピクセル単位の透過に対応させるにはSRCALPHAフラグで設定します)

      追加で設定できるspecial_flags引数は、pygameのver 1.8.0では BLEND_ADD, BLEND_SUB, BLEND_MULT, BLEND_MIN, BLEND_MAXが追加され、ver1.8.1ではBLEND_RGBA_ADD, BLEND_RGBA_SUB, BLEND_RGBA_MULT, BLEND_RGBA_MIN, BLEND_RGBA_MAX BLEND_RGB_ADD, BLEND_RGB_SUB, BLEND_RGB_MULT, BLEND_RGB_MIN, BLEND_RGB_MAXが追加され、将来的には他にも様々なspecial_flags引数を追加する予定です。

      このの処理では、塗りつぶされる範囲がrect値の戻り値として返されます。



    Surface.scroll
      Surface上に描写された画像の表示位置を移動させます。
      Surface.scroll(dx=0, dy=0): return None

      Surface上に描写された画像をdx引数で指定したピクセル分右へ、dy引数で指定したピクセル分下へ移動させます。dxとdyそれぞれマイナスの値を指定すれば、左方向への移動や上方向への移動もできます。 Surface上の画像が描写されていない範囲については、元のピクセル位置情報がそのまま保持されます。この命令で移動できるのは描写可能領域内に限定されます。dxとdyの設定で画像位置がSurfaceの範囲からはみ出してしまっても特に問題はありません。



    Surface.set_colorkey
      Surfaceの透過色を設定します。
      Surface.set_colorkey(Color, flags=0): return None
      Surface.set_colorkey(None): return None

      Surfaceの透過色を設定します。 設定したSurfaceをコピー描写する時、ここで設定した色と同じ色のピクセルは透明になります。透明色は(赤,緑,青)形式の値や、カラー定数で設定します。None値を引数に指定すると、設定されている透過色が解除されます。

      Surfaceがピクセル単位の透過に対応していないと透明色は無視されてしまいます。透明色はSurface全体の透明度と組み合わせることができます。

      追加で指定できるflags引数でpygame.RLEACCELの設定を行うことができ、それほど速くないディスプレイ環境でもより良いパフォーマンスで描写処理を行うことができます。 An RLEACCEL Surfaceでは画像編集処理を行うのは遅いですが、画像のコピー処理は早くなります。



    Surface.get_colorkey
      Surfaceの透過色を取得します。
      Surface.get_colorkey(): return RGB or None

      Surfaceの透過色を取得します。透過色が設定されていなければNone値が返されます。



    Surface.set_alpha
      Surface画像全体の透明度を設定します。
      Surface.set_alpha(value, flags=0): return None
      Surface.set_alpha(None): return None

      Surfaceの透明度を設定します。Surfaceをコピー描写する場合、各ピクセルはこの命令で設定した分だけ透明に描写されます。透明度は0から255までの数字で設定でき、0の時は完全に透明状態となり、255の時は完全に不透明状態となります。透明度の引数としてNone値を設定すると、Surfaceの透過は使用できなくなります。

      この透過はピクセル単位の透過とは違うものです。 Surfaceがピクセル単位の透過を使用できる形式の場合、この命令で設定された透明度は無視されます。ですがこの命令でNone値を設定した場合は、ピクセル単位の透明度も無効となります。

      追加で指定できるflags引数でpygame.RLEACCELの設定を行うことができ、それほど速くないディスプレイ環境でもより良いパフォーマンスで描写処理を行うことができます。 RLEACCELの設定されたSurfaceでは画像編集処理を行うのは遅いですが、画像コピー処理は早くなります。



    Surface.get_alpha
      Surfaceの透明度を取得します。
      Surface.get_alpha(): return 透明度 or None値

      Surfaceの透明度を取得します。透明度が設定されていなければNone値が返されます。



    Surface.lock
      ピクセルを編集するためにSurfaceの保存されているメモリーをロックします。
      Surface.lock(): return None

      編集のためにSurfaceのピクセルデータをロックします。様々な描写処理が絶えず行われているSurface上では、ピクセルデータはすぐに消えてしまうビデオメモリーに保存されたり、すぐには判別できないような形式で保存されていたりします。 Surfaceをロックすることで、ピクセルのメモリーは通常のソフトウェアでも編集ができるようになります。ピクセルの値の読み込みや書き込みを行う処理を記述する場合はSurfaceのロックを行う必要があります。

      Surfaceは必要な時以外はロックしたままにするべきではありません。Pygameではロック状態のSurfaceは表示や制御ができない場合が多いです。

      全てのSurfaceでロック処理が必要なわけではありません。 The Surface.mustlock命令を使用するとそのSurfaceはロックが必要かどうかを確認することができます。ロックが必要ではないSurfaceの場合は、ロックの有無によって パフォーマンスに違いは出ません。

      pygameの全ての命令では、Surfaceデータのロックやロック解除は必要な時に自動的に行われます。 Surfaceのロックとロック解除を大量に繰り返し実行するようなプログラムを記述する場合、lock命令とunlock命令の間の処理はインテンドで字下げしてブロックを分けると分かりやすいでしょう。

      ロック処理とロック解除処理は、複数回実行して入れ子状態になっても問題ありません。ロック処理を複数回実行している時は、ロックした回数分ロック解除処理を行うことでSurfaceはロック解除状態になります。



    Surface.unlock
      ピクセルの編集後にSurfaceが保存されているメモリーのロックを解除します。
      Surface.unlock(): return None

      ロックされているSurfaceのピクセルデータのロックを解除します。ロック解除されたSurfaceはPygameでの描写や制御ができるようになります。ロックの詳細についてはSurface.lockの項目を参照してください。

      pygameの全ての命令では、Surfaceデータのロックやロック解除は必要な時に自動的に行われます。 Surfaceのロックとロック解除を大量に繰り返し実行するようなプログラムを記述する場合、lock命令とunlock命令の間の処理はインテンドで字下げしてブロックを分けると分かりやすいでしょう。

      ロック処理とロック解除処理は、複数回実行して入れ子状態になっても問題ありません。ロック処理を複数回実行している時は、ロックした回数分ロック解除処理を行うことでSurfaceはロック解除状態になります。



    Surface.mustlock
      このSurfaceの編集にロックが必要がどうかを確認します。
      Surface.mustlock(): return bool

      このSurfaceのピクセルデータ編集時にロック処理が必要な場合は戻り値 True を返します。通常、純粋なソフトウェアSurfaceはロックを行う必要がありません。必要な時には全てのSurfaceをまとめてロックしてしまった方が安全かつ速いため、この命令を使用することはあまりないでしょう。

      pygameの全ての命令では、Surfaceデータのロックやロック解除は必要な時に自動的に行われます。 Surfaceのロックとロック解除を大量に繰り返し実行するようなプログラムを記述する場合、lock命令とunlock命令の間の処理はインテンドで字下げしてブロックを分けると分かりやすいでしょう。



    Surface.get_locked
      Surfaceが現在ロックされているかどうかを確認します。
      Surface.get_locked(): return bool

      Surfaceがロックされている時は戻り値 True を返します。最後に行われたのがロック処理なのかロック解除処理なのかを判別する命令のため、Surface がロックされている回数は考慮されません。



    Surface.get_locks
      Surfaceに対して行われた全てのロック情報を取得します。
      Surface.get_locks(): return tuple

      現在Surfaceに対して適用されている全てのロック情報を戻り値として返します。



    Surface.get_at
      指定したピクセル一点の色情報を取得します。
      Surface.get_at((x, y)): return Color

      指定座標にあるピクセルの色情報をRGBA形式の戻り値として返します。Surfaceがピクセル単位の透過に対応していない場合は、透明度は常に255(不透明)となります。引数として渡したピクセルの座標がSurfaceの範囲外だった場合は、IndexErrorの例外が発生します。

      一般的にゲームやリアルタイムシミュレーションでは、ピクセル一点一点のデータを取得したり設定したりするような処理は遅すぎて使い物になりません。blit命令や,fill命令、draw命令のような多くのピクセルをまとめて操作する処理を行う方がよいでしょう。もしくはsurfarrayクラスやPixelArrayクラスを使用するのもいいかもしれません。

      この命令を使用すると、Surfaceは必要に応じて一時的にロックやロック解除されます。

      Pygameのver1.9.0からはタプル型の値ではなくColor型の値で戻り値が返されるようになりました。もしColor型ではなくタプル型で戻り値が欲しい場合はtuple(surf.get_at((x,y)))と記述してください。どちらの処理でもあまり違いはありませんが、色をdict型の情報として使用したい場合に関係してきます。



    Surface.set_at
      指定したピクセル一点の色情報を設定します。
      Surface.set_at((x, y), Color): return None

      RGBA形式の値かカラー定数を使用して指定座標にあるピクセルの色情報を設定します。Surfaceがピクセル単位の透過に対応していない場合は、透明度については無視されます。 引数として渡したピクセルの座標がSurfaceそのもの、もしくはSurface描写可能範囲の範囲外だった場合は何も起こりません。

      一般的にゲームやリアルタイムシミュレーションでは、ピクセル一点一点のデータを取得したり設定したりするような処理は遅すぎて使い物になりません。

      この命令を使用すると、Surfaceは必要に応じて一時的にロックやロック解除されます。



    Surface.get_palette
      8bit Surfaceのカラーインデックスパレットを取得します。
      Surface.get_palette(): return [RGB, RGB, RGB, ...]

      最大で256個で構成される色情報のリスト型値を戻り値として返します。この戻り値は8ビットのSurfaceにて使用される色を順番に並べてリスト化したものです。ここで取得するカラーパレットは元パレットのコピーのため、変更してもSurfaceに影響はありません。

      pygameのver1.9.0からは、戻り値がタプル型ではなColor型となりました。



    Surface.get_palette_at
      パレットの指定した位置にある色を取得します。
      Surface.get_palette_at(index): return RGB

      Surfaceのカラーパレット上の指定した位置にある色情報を戻り値として返します。位置は0から255の間の値を指定してください。

      pygameのver1.9.0からは、戻り値がタプル型ではなColor型となりました。



    Surface.set_palette
      8bit Surfaceのカラーインデックスパレットを設定します。
      Surface.set_palette([RGB, RGB, RGB, ...]): return None

      8bit Surfaceの全てのパレットを設定します。 現在設定されているカラーパレットは失われ、この命令で設定したものが新たに適用されます。256個の色情報を全て引数として渡す必要はありませんが、数が足りない場合は前から数えて順番に色情報が設定されます。

      Surfaceのピクセルが8ビット以上の場合この機能は適用されません。



    Surface.set_palette_at
      8bit Surfaceのパレット上の指定した位置に色を設定します。
      Surface.set_at(index, RGB): return None

      Surfaceのカラーパレット上の指定した位置に色情報を設定します。

      Surfaceのピクセルが8ビット以上の場合この機能は適用されません。



    Surface.map_rgb
      色情報を、その色情報に紐づけされたカラー定数へ変換します。
      Surface.map_rgb(Color): return mapped_int

      (赤,緑,青,透明度)形式の色情報を、その色情報に紐づけされているカラー定数へ変換します。(赤,緑,青,透明度)形式で細かい色情報を指定しても、それがSurfaceのビット深度を超える色情報だった場合は、Surfaceの深度に合わせた最も近いカラー定数が取得されます。Pygame内部の処理でカラー定数が使われることはあまりありませんが、Surfaceや色情報の設定が必要な多くの命令ではカラー定数を引数として指定することができます。

      色やピクセル形式についてのさらに詳細な情報が知りたい場合は、Surfaceクラスの項目を参照してください。



    Surface.unmap_rgb
      カラー定数を、紐づけ先の色情報に変換します。
      Surface.map_rgb(mapped_int): return Color

      カラー定数を、(赤,緑,青,透明度)形式の色情報に変換します。Pygame内部の処理でカラー定数が使われることはあまりありませんが、Surfaceや色情報の設定が必要な多くの命令ではカラー定数を引数として指定することができます。

      色やピクセル形式についてのさらに詳細な情報が知りたい場合は、Surfaceクラスの項目を参照してください。



    Surface.set_clip
      Surfaceの描写可能領域を設定します。
      Surface.set_clip(rect): return None
      Surface.set_clip(None): return None

      全てのSurfaceには描写可能領域が存在します。描写可能領域とはSurface上にてピクセルの編集をすることができる矩形範囲のことです。引数として Noneが設定された場合はSurface全体が編集可能な範囲となります。

      この描写可能領域の大きさは常にSurface自身の大きさによって制限されます。描写可能領域が大きすぎると、Surfaceの範囲内に収まるよう縮小されます。



    Surface.get_clip
      Surfaceの描写可能領域を取得します。
      Surface.get_clip(): return Rect

      描写可能領域を取得します。Surfaceは常に有効な矩形範囲を返し、画像の範囲外が含まれることは決してありません。Surfaceに描写可能領域が設定されていない場合は、Surface全体の矩形範囲を戻り値として返します。



    Surface.subsurface
      オリジナルのSurfaceを参照するSurfaceを新規作成します。
      Surface.subsurface(Rect): return Surface

      オリジナルのSurfaceとピクセル情報を共有するSurfaceを戻り値として返します。新規に作成されたSurfaceは、オリジナルSurfaceの分身と見なされます。どちらかのSurafaceのピクセルを編集すると、その編集はもう一方のSurafaceにも影響を与えます。描写可能領域や透過色のようなSurfaceの情報は、共有されずにそれぞれが個別に情報を設定できます。

      新規作成されたSurfaceは元Surfaceからカラーパレット、透過色、透過設定などの情報を引き継ぎます。

      複数のsubsurfaceを作成することや、subsurfaceのsubsurfaceを作成することも可能です。display.set_mode命令でHWSURFACE引数を設定するとハードウェア側で高速描写を行う状態に設定にされますが、その設定を行っていなければsubsurfaceを画面に表示することも可能です。

      subsurfaceについてさらに知りたいのなら、Surface.get_offsetSurface.get_parent の項目を参照してください。



    Surface.get_parent
      subsurfaceのオリジナルSurfaceを取得します。
      Surface.get_parent(): return Surface

      subsurfaceのオリジナルSurfaceを戻り値として返します。この処理を実行したのがsubsurfaceでない場合は、None値が戻り値として返されます。



    Surface.get_abs_parent
      subsurfaceの大元となるオリジナルSurfaceを取得します。
      Surface.get_abs_parent(): return Surface

      subsurfaceの大元となるオリジナルSurfaceを戻り値として返します。この処理を実行したのがsubsurfaceでない場合、そのSurface自身が戻り値として返されます。



    Surface.get_offset
      subsurfaceがオリジナルSurface内のどの位置を参照しているか調べます。
      Surface.get_offset(): return (x, y)

      のsubsurfaceがオリジナルSurface内のどの位置を参照しているか調べます。この処理を実行したのがsubsurfaceでない場合、(0,0)の位置情報が戻り値として返されます。



    Surface.get_abs_offset
      subsurfaceが大元となるオリジナルSurface内のどの位置を参照しているか調べます。
      Surface.get_abs_offset(): return (x, y)

      subsurfaceが大元となるオリジナルSurface内のどの位置を参照しているか調べます。この処理を実行したのがsubsurfaceでない場合、(0,0)の位置情報が戻り値として返されます。



    Surface.get_size
      Surfaceの大きさを取得します。
      Surface.get_size(): return (width, height)

      Surfaceのピクセル単位での幅と高さを戻り値として返します。



    Surface.get_width
      Surfaceの幅を取得します。
      Surface.get_width(): return width

      Surfaceのピクセル単位での幅を戻り値として返します。



    Surface.get_height
      Surfaceの高さを取得します。
      Surface.get_height(): return height

      Surfaceのピクセル単位での高さを戻り値として返します。



    Surface.get_rect
      Surfaceが存在する範囲のRect値を取得します。
      Surface.get_rect(**kwargs): return Rect

      Surfaceが存在する範囲全体をRect値の戻り値として返します。このRect型範囲は常に(0,0)座標を起点とし、幅と高さはそれぞれSurface全体に表示される画像と同じものとなります。

      この命令ではキーワードとその値を引数として設定することができます。このキーワード値がRect型クラスの該当する値に設定されたうえで、戻り値が返ります。例えば、'get_rect(center=(100,100))'という引数を設定した場合、Surfaceの中心が(100,100)座標となった状態のRect値が取得されます。



    Surface.get_bitsize
      Surfacが使用するピクセル形式のビット深度を取得します。
      Surface.get_bitsize(): return int

      ピクセルの描写に使われるビット数を戻り値として返します。この値はピクセル描写に使用されるバイト数を正確に表せるわけではありません。例えば、15bitのSurfaceであっても2バイトが必要になります。



    Surface.get_bytesize
      Surfaceのピクセル一個あたりの使用するバイト数を取得します。
      Surface.get_bytesize(): return int

      ピクセル一個あたりの使用するバイト数を戻り値として返します。



    Surface.get_flags
      Surfaceで設定されているflagを取得します。
      Surface.get_flags(): return int

      現在Surfaceに設定されている機能一覧を戻り値として返します。Each feature is a bit in the flags bitmask.よく使用されるflagにはHWSURFACERLEACCELSRCALPHASRCCOLORKEYなどがあります。

      以下により詳細なfalg一覧を示します。 全てのflag一覧はSDL_video.hファイルから参照することが可能です。

        SWSURFACE	0x00000000	# Surfaceはソフトウェア側のメモリーに記録されます。
        HWSURFACE	0x00000001	# Surfaceはハードウェア側のメモリーに記録されます。
        ASYNCBLIT	0x00000004	# 可能な場合には非同期でのコピー描写処理を行います
       

      以下は pygame.display.set_mode命令で設定できます。

        ANYFORMAT	0x10000000	# 全ての解像度とピクセルフォーマットを使用可能にします。
        HWPALETTE	0x20000000	# Surfaceは専用のカラーパレットを持つことができます。
          DOUBLEBUF	0x40000000	# ダブルバッファリングモードを使用可能にします。
        FULLSCREEN	0x80000000	# Surfaceをフルスクリーンモードにします。
        OPENGL        0x00000002      # OpenGLでの画像処理を使用可能にします。
        OPENGLBLIT	0x0000000A	# OpenGLでの画像処理を使用可能にし、コピー描写処理にて使用します。このflagは現在廃止されています。
        RESIZABLE	0x00000010	# ウィンドウの大きさを変えることができるモードです。
        NOFRAME       0x00000020	# ウィンドウのタイトルバーと枠がなくなります。
      

      以下はpygameの内部処理で自動的に設定されます。 (ユーザーが設定することはできません。)

        HWACCEL       0x00000100	# ハードウェア側の高速な処理でコピー描写を行います。
        SRCCOLORKEY	0x00001000	# コピー元の透過色を適用してコピー描写を行います。
        RLEACCELOK	0x00002000	# Private flag
        RLEACCEL	0x00004000	# Surfaceはランレングス形式で圧縮されます。
        SRCALPHA	0x00010000	# コピー元の透過度を適用してコピー描写を行います。
        PREALLOC	0x01000000	# Surfaceはあらかじめ割り当てられたメモリーを使用します。
      


    Surface.get_pitch
      Surfaceのピクセル1行ごとに使用されるバイト数を取得します。
      Surface.get_pitch(): return int

      Surfaceのピクセル1行ごとのバイト数を戻り値として返します。ハードウェア側のメモリに保存されたSurfaceは、ちゃんと1行ごとにまとめられていない場合もあるので気をつけてください。また Subsurfaceは実際よりも横幅が大きくなってしまいます。

      ここで取得できる値は、通常のPygame処理であれば特に使う機会はないでしょう。



    Surface.get_masks
      タプル型の(赤,緑,青,透明度)形式色情報と整数型のカラー定数を相互に変換する際に使われるビットマスク
      Surface.get_masks(): return (R, G, B, A)

      カラー定数を(赤,緑,青,透明度)の四つの情報に分けるために使用されるビットマスクを、戻り値として返します。

      ここで取得できる値は、通常のPygame処理であれば特に使う機会はないでしょう。



    Surface.set_masks
      タプル型の(赤,緑,青,透明度)形式色情報と整数型のカラー定数を相互に変換する際に使われるビットマスクを設定します。
      Surface.set_masks((r,g,b,a)): return None

      ここで設定できる値は、通常のPygame処理であれば特に使う機会はないでしょう。この命令はpygameのver 1.8.1で新たに実装されました。



    Surface.get_shifts
      タプル型の(赤,緑,青,透明度)形式色情報と整数型のカラー定数を相互に変換する際に使われるビットシフト
      Surface.get_shifts(): return (R, G, B, A)

      タプル型の(赤,緑,青,透明度)形式色情報と整数型のカラー定数を相互に変換する際に使われるビットシフトを戻り値として返します。

      ここで取得できる値は、通常のPygame処理であれば特に使う機会はないでしょう。



    Surface.set_shifts
      タプル型の(赤,緑,青,透明度)形式色情報と整数型のカラー定数を相互に変換する際に使われるビットシフトを設定します。
      Surface.set_shifts((r,g,b,a)): return None

      ここで設定できる値は、通常のPygame処理であれば特に使う機会はないでしょう。この命令はpygameのver 1.8.1で新たに実装されました。

      ※原文では「Surface.get_shifts((r,g,b,a))」となっていますが、誤りの可能性があるため「Surface.set_shifts((r,g,b,a))」と読み替えて訳しています。



    Surface.get_losses
      タプル型の(赤,緑,青,透明度)形式色情報と整数型のカラー定数を相互に変換する際に使われるビットの値
      Surface.get_losses(): return (R, G, B, A)

      カラー定数への変換時に、(赤,緑,青,透明度)形式色情報の各値から削除される最下位ビットの値を戻り値として返します。

      ここで取得できる値は、通常のPygame処理であれば特に使う機会はないでしょう。



    Surface.get_bounding_rect
      データが保有されている最小範囲を調べます。
      Surface.get_bounding_rect(min_alpha = 1): return Rect

      Surface内で、透明度が1以上の最小範囲をRect型の戻り値として返します。

      この処理を行うときは、必要に応じて一時的にSurfaceのロックやロック解除が行われます。

      この命令はpygameのver 1.8.1で新たに実装されました。



    Surface.get_buffer
      Surfaceのピクセル編集用に確保されるバッファ領域を取得します。
      Surface.get_buffer(): return BufferProxy

      Surfaceのピクセル編集用に確保されるバッファ領域を戻り値として返します。このバッファ領域は、ピクセルを直接編集したり操作するのに使用することができます。

      この処理が行われる時は、必然的にSurfaceはロックされることになります。というのも、このロックが解除されたのを合図にバッファ領域内のデータが消去されるからです。

      この命令はpygameのver 1.8で新たに実装されました。



トップへ戻る Cdrom || Color || Cursors || Display || Draw || Event || Examples || Font || Gfxdraw || Image || Joystick || Key || Locals || Mixer || Mouse || Movie || Music || Overlay || Pixelarray || Pygame || Rect || Scrap || Sndarray || Sprite || Surface || Surfarray || Tests || Time || Transform