1

基本的にスケッチをスケッチするPythonで書かれたアプリケーションがあります。WASDと矢印キーでピクセルを移動すると、跡が残ります。ただし、画面上のピクセル数のカウンターを追加したいと考えています。サーフェス全体を更新せずに、ピクセル描画を pwning せずにカウンターを更新するにはどうすればよいですか?

または、下の描画面が見えるように、テキスト以外は完全に透明な面を作成できますか?

4

2 に答える 2

1

この問題を解決するには、Etch-a-Sketch ピクセルに別のサーフェスを用意して、画面を更新するときにピクセルが破壊されないようにする必要があります。残念なことに、Rigo のスキームでは、フォントはそれ自体の上にレンダリングされ続け、2 つ以上のピクセル数の変更で乱雑になります。

そこで、サンプル レンダリング コードを次に示します。

# Fill background
screen.fill((0xcc, 0xcc, 0xcc))
# Blit Etch-a-Sketch surface (with the drawing)
# etch_surf should be the same size as the screen
screen.blit(etch_surf, (0, 0))
# Render the pixel count
arial = pygame.font.SysFont('Arial', 20)
counter_surf = arial.render(str(pixel_count), True, (0, 0, 0))
screen.blit(counter_surf, (16, 16))
# Refresh entire screen
pygame.display.update()

確かに、画面全体を更新するのはかなり非効率的です。これには、2 つのオプションがあります。図面が変更されたときにのみ画面を更新するか、図面の変更の場所を追跡して個々の場所を更新します (更新に関するドキュメントを参照してください)。2 番目のオプションを選択した場合は、テキストと以前の場所を更新する必要があります。スプライトでこれを管理することをお勧めします。

于 2009-07-13T06:00:04.380 に答える
0

必要なのは pygame.font モジュールです

#define a font surface 
spamSurface = pygame.font.SysFont('Arial', 20)

#then, in your infinite cycle...   
eggsPixels = spamSurface.render(str(pixelsOnScreen), True, (255, 255, 255))
hamDisplay.blit(eggsPixels, (10, 10))

spamSurfaceは新しいフォント サーフェスです。はレンダリング (表示/表示) されるeggsPixels値であり、メイン サーフェス ディスプレイです。spamSurfacehamDisplay

于 2009-07-02T06:35:37.587 に答える