pygletウィンドウ内の個々のピクセルの色を変更する必要があるプログラムを作成しています。私はドキュメントでこれを行う方法を見つけることができません。これを行う方法はありますか?pygletウィンドウの色を変更する方法
答えて
私はあなたが必要とするかもしれない行に沿っている別の答えを追加します。それは「何も」ませんので
window = pyglet.window.Window(width=width, height=height)
pyglet.gl.glClearColor(0.5,0,0,1) # Note that these are values 0.0 - 1.0 and not (0-255).
だから背景を変更することは事実上不可能である:ウィンドウ自体を介して、あなたが決めるものは何でも「クリア」カラーバッファになりますので。
しかし、
.draw()
機能で背景にピクセルを描くことはできます。
import pyglet
from random import randint
width, height = 500, 500
window = pyglet.window.Window(width=width, height=height)
@window.event
def on_draw():
window.clear()
for i in range(10):
x = randint(0,width)
y = randint(0,height)
pyglet.graphics.draw(1, pyglet.gl.GL_POINTS,
('v2i', (x, y)),
('c3B', (255, 255, 255))
)
pyglet.app.run()
これにより、背景に無作為に配置された10個の白い点が作成されます。
上記の内容を追加するには、.blit()
または.draw()
フィーチャーをpyglet.graphics.draw()
行の後に配置するだけです。
ピクセルを背景の「画像」にブリットすることができます。あなたはthis Stack Overflowの質問を見ることができます。
マジック機能SolidColorImagePattern
を使用して、必要なデータを変更することができます。
R,G,B,A = 255,255,255,255
pyglet.image.SolidColorImagePattern((R,G,B,A).create_image(width,height)
これは.blit()
:画像です。それは白で、おそらくあなたが望むものではありません。
だから我々は(アリの戦争を)いくつかのより多くの魔法を行うと、ランダムなもののために、全ての画素をスワップアウトされます:教育目的のために
import pyglet
from random import randint
width, height = 500, 500
window = pyglet.window.Window(width=width, height=height)
image = pyglet.image.SolidColorImagePattern((255,255,255,255)).create_image(width, height)
data = image.get_image_data().get_data('RGB', width*3)
new_image = b''
for i in range(0, len(data), 3):
pixel = bytes([randint(0,255)]) + bytes([randint(0,255)]) + bytes([randint(0,255)])
new_image += pixel
image.set_data('RGB', width*3, new_image)
@window.event
def on_draw():
window.clear()
image.blit(0, 0)
pyglet.app.run()
、私は簡単にチャンクにそれを打破するでしょう。
image = pyglet.image.SolidColorImagePattern((255,255,255,255)).create_image(width, height)
前述のように、白ベタ画像を作成します。幅と高さはウィンドウサイズに一致します。
我々は、画像データをつかむ:
data = image.get_image_data().get_data('RGB', width*3)
このbytes
文字列は、RGBのピクセルあたり3つのバイトを占めているため20x20
画像が1200
バイトビッグになる意味、width*height*<format>
が含まれています。
new_image = b''
for i in range(0, len(data), 3):
pixel = bytes([randint(0,255)]) + bytes([randint(0,255)]) + bytes([randint(0,255)])
new_image += pixel
すべてのピクセル(LEN(データ)を超えるこのブロック全体のループは、単に便利なものです、あなたにもrange(0, width*height*3, 3)
を行いますが、まあまあでした。
3 randint(255)のピクセルcontistsは、結合オブジェクトをバイト。。
range(0, len(data), 3)
で
3
ステップ理由理由だ
pixel = b'xffxffxff'
私たちがしたらgenerat:そうのような1つの文字列に何らかの理由でバイトオブジェクトimage
を変更することはできません。私は以前にバイト "文字列"を変更したことを誓うことができました。私は疲れているので、おそらくユートピアの夢なのです。
image.set_data('RGB', width*3, new_image)
そして、それはそれだが:
はとにかく、一度すべてが甘いイメージ構築が行われ、我々はそれが実行して、新しいデータのイメージオブジェクトを与えます。 -45度の冬の日に日差しのバターとして簡単。
ドキュメント:
- https://pyglet.readthedocs.io/en/pyglet-1.2-maintenance/programming_guide/quickstart.html
- https://github.com/Torxed/PygletGui/blob/master/gui_classes_generic.py
- https://pythonhosted.org/pyglet/api/pyglet.image.ImageData-class.html#get_image_data
- https://pythonhosted.org/pyglet/api/pyglet.image.ImageData-class.html#set_data
ます。また、地域を取得するためにオプトインし、ちょうど地域を変更することができます。..しかし、私はあなたに微妙な変更を残しておきます:)
- 1. ウィンドウの背景色を変更する
- 2. アクティブなウィンドウ - タイトルバーの青色/灰色の変更を防ぐ方法
- 3. Pygletのウィンドウの終了イベント
- 4. JSplitPaneの色を変更する方法
- 5. ヘッダーバーの色を変更する方法
- 6. TemplateFieldの色を変更する方法
- 7. stat_summary()の色を変更する方法
- 8. Visual Studio 2008で 'コード定義'ウィンドウの背景色を変更する方法は?
- 9. 選択ウィンドウの色を変更する最も簡単な方法html
- 10. textlabelの色をUITableViewCellStyleValue1の色に変更する方法
- 11. Pygletのサイズ変更可能なバッチ
- 12. 多色グリフコン(アイコンフォント)の色を変更する方法
- 13. Aptanaテンプレートの色 - 定義色を変更する方法
- 14. 楕円の色をランダムな色に変更する方法
- 15. Pyglet更新バッチデータ
- 16. どのウィンドウの境界線の色を変更するには?
- 17. 子ウィンドウの背景色を変更するC++
- 18. Swift:プログラムでウィンドウの背景色を変更する
- 19. フレームの背景色を新しいウィンドウに変更する
- 20. テキストビューの位置を変更する方法textviewの色を変更する
- 21. scrollToウィンドウの方向を変更する
- 22. Googleマップの方向パスの色を変更する方法v3
- 23. ラジオでの色の変更方法
- 24. UWPウィンドウの境界線の色を変更しますか?
- 25. Cのcmdウィンドウの背景色を変更しますか?
- 26. テーマを変更してアプリケーション全体のテキストの色を変更する方法
- 27. arcgisの情報ウィンドウの位置を変更する方法
- 28. ウィンドウのダンプファイルのMaxDiskUsageを変更する方法
- 29. UWPアプリケーションのウィンドウのサイズ変更を制限する方法
- 30. DWMエアロティントの色をウィンドウ単位で変更できますか?