私はScatterLayoutをたくさん使っています(スキャッタの中に散らばっているなど)。私を逃れる1つの機能は、ある種のアルファマスクを散布キャンバスに適用することです。アイデアは、背景画像や他の単純な深度のトリックに対応する単純な形状のノックアウトを実行することです。Kivy、Maskウィジェットキャンバス
これは基本的なOpenGLやkivy.graphics.stencil_instructionsで実行できると思います。私は、OpenGLの重いコマンド(私はそれらをデバッグする方法はわかりません)が特に気に入っていませんが、単純なコマンドをウィジェットクラスにラップするだけで問題ありません。だからここ
は、私が他のソースから取得しています何ですが、私は(四角形のように)これ以上の原始的な固形物を取りたい:
(コードは未テストです!)
テクスチャベースの方向で更新with self.canvas:
# Hopefully I can build my "transparency mask" manually with a Texture
texture = Texture.create(size=(64, 64))
size = 64 * 64 * 3
buf = [int(x * 255/size) for x in range(size)]
buf = b''.join(map(chr, buf))
texture.blit_buffer(buf, colorfmt='rgb', bufferfmt='ubyte')
StencilPush()
Rectangle(texture=texture, pos=self.pos, size=(64, 64))
#use mask
StencilUse()
"""
Will we get an image based mask on all drawing commands placed here?
"""
StencilPop()
あなたは[この回答](http://stackoverflow.com/questions/35802203/how-do-i-mask-an-image-in-kivy-using-python)ではうまくいきませんか? – KeyWeeUsr
@KeyWeeUsrあなたの投稿は新しいアイデアを生み出しましたが、まだテストしていません。私は私の更新された考えを反映するために私の質問を編集しました。 – user2097818