0

この行を使用して、テキストを表面にブリットしようとしています。

surface.blit(myFont.render(text, 1, text_color),(200,200))

しかし、エラーが発生します:TypeError:必須の引数'dest'(pos 2)が見つかりません

なぜこれが起こっているのか理解できないようです...

4

3 に答える 3

0

エラーが見つかりました...

myFontのサイズをfloatタイプに設定しようとしました。気に入らなかったようです!:)

于 2012-08-27T10:26:07.140 に答える
0

surface.blit()関数の2番目の引数として適切なrectを指定していません。長方形である必要があります。私は次のことを提案します:

text=myFont.render(text, 1, text_color)
rect=text.get_rect()
rect.topleft=(200, 200)
surface.blit(text, rect)

すべてを1行のコードで実行するには、少し複雑になる可能性があります。

surface.blit(myFont.render(text, 1, text_color), pygame.Rect(200, 200, myFont.render(text, 1, text_color).get_rect().width, myFont.render(text, 1, text_color).get_rect().height)

中央を200、200にしたい場合、簡単な複数行のコードは次のようになります。

text=myFont.render(text, 1, text_color)
rect=text.get_rect()
rect.centerx=200
rect.centery=200
surface.blit(text, rect)

1行でそれを行うために、それは途方もなく長くなります:

surface.blit(myFont.render(text, 1, text_color), pygame.Rect(200-myFont.render(text, 1, text_color).get_rect().width/2, 200-myFont.render(text, 1, text_color).get_rect().height/2, myFont.render(text, 1, text_color).get_rect().width, myFont.render(text, 1, text_color).get_rect().height)

ご覧のとおり、これを実行しようとしていた1行よりも、5行のコードで実行する方がはるかに簡単であり、おそらくそれも高速です。基本的に、1行に対して行う必要があるのは、エラーを回避するために、テキストをレンダリングし、rectの各パラメーターに対してそのrectを取得することです。これは、特にこれをループに入れている場合は、非常に長い時間がかかります。ロードを実行している場合は問題ないかもしれませんが、それでも複数行をお勧めします。

于 2012-09-01T15:52:51.213 に答える
-1

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

描画するサーフェスをパラメータとして設定していません。詳細については、 Surface.blit
に関するドキュメントをお読みください

于 2012-08-27T08:44:06.920 に答える