Photoshop のような不適切な「レイヤー内の画像」に聞こえるかもしれませんが、実際にはそれが私が持っているものであり、機能させたいと考えています。
プログラムを起動した後、wx.boxsizer のセットを使用して、素敵で整理された画面を表示します。
Horizontal wx.BoxSizer の 1 つの行には、異なる wx.Panels で行われた 3 つの列があり、それぞれに Timer 関数によって行われた wx.StaticBitmaps の移動が含まれています。
元のパネル サイズを維持するために 0 の割合で中央にある 2 番目の wx.Panel には、実際には 2 つの画像が含まれています。
これは私にとってはうまくいきません。タイマーによって移動される他の画像の上にPNGを配置したいだけです。お好みで2層。
非常にシンプルで基本的なアクション効果を作成しています (PNG のオブジェクトが実行されているように)。
今、私はこれについていくつかの方法を考えましたが、どれもうまくいきませんでした:
- Python がどの画像を前面に出し、どの画像を後に残すかを決定する方法を理解してください。それを操る
- 動画像をサイザーに保持し、PNG を取り出して動画像の上に配置します (その動画像がどこにあるかを動的に判断する必要があるため)
- 動く画像を wx.panel の背景にすると、おそらくその上に透明な PNG を呼び出すことができます。
勇敢な目のために、スクリプトの一部をここに貼り付けます。
class AnimationPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
self.loc = wx.Image("intro/runner.png",wx.BITMAP_TYPE_PNG).ConvertToBitmap()
self.locpic = wx.StaticBitmap(self, -1, self.loc, (0, 0), (self.loc.GetWidth(), self.loc.GetHeight()))
self.xer = 3080
self.xer2 = 2310
self.xer3 = 1540
self.env = wx.Image("intro/environ1.png",wx.BITMAP_TYPE_PNG).ConvertToBitmap()
self.env2 = wx.Image("intro/environ2.png",wx.BITMAP_TYPE_PNG).ConvertToBitmap()
self.env3 = wx.Image("intro/environ3.png",wx.BITMAP_TYPE_PNG).ConvertToBitmap()
self.picture = wx.StaticBitmap(self, -1, self.env, (0, 0), (self.env.GetWidth(), self.env.GetHeight()))
self.picture2 = wx.StaticBitmap(self, -1, self.env2, (770, 0), (self.env2.GetWidth(), self.env2.GetHeight()))
self.picture3 = wx.StaticBitmap(self, -1, self.env3, (1540, 0), (self.env3.GetWidth(), self.env3.GetHeight()))
self.timer = wx.Timer(self)
self.Bind(wx.EVT_TIMER, self.OnTimer, self.timer)
self.timer.Start(5)
def OnTimer(self, event):
if self.xer <= 3080:
self.xer += 1
self.picture.Move((self.xer,0))
else:
self.xer = -770
if self.xer2 <= 3080:
self.xer2 += 1
self.picture2.Move((self.xer2,0))
else:
self.xer2 = -770
if self.xer3 <= 3080:
self.xer3 += 1
self.picture3.Move((self.xer3,0))
else:
self.xer3 = -770
これはメインフレームにあります:
ap = AnimationPanel(self)
v2box = wx.BoxSizer(wx.HORIZONTAL)
v2box.Add(someother, 1, wx.EXPAND)
v2box.Add(ap, 0, wx.EXPAND)
v2box.Add(someother, 1, wx.EXPAND)
私はこれに研究を入れましたが、私はかなり初心者なので、可能であれば簡単なヒントや提案を手伝ってください.
ありがとう。