2

単純な静止画像(ビットマップ)をパネルにロードするにはどうすればよいですか?画像の位置を定義したいだけで、他には何もありません。

これはエラーなしで実行されます:

bmp = wx.Image('pics/default.bmp', wx.BITMAP_TYPE_BMP).ConvertToBitmap()
wx.StaticBitmap(self.panel, -1, bmp, (500, 500))

しかし、私の画像(default.bmp)の代わりに、小さな黒い四角があります(ただし、少なくとも正しい位置にあります)

編集:これは機能します:

    self.picture = wx.StaticBitmap(self.panel,size=(200,300),pos=(500,500))
    self.picture.SetBitmap(wx.Bitmap('pics/default.bmp'))

問題は、StaticBitmapのサイズを追加する必要があることでした。

4

1 に答える 1

3

私はビットマップをwxPythonに挿入することにあまり慣れていませんが、APIを少し読んだだけで、問題が見つかったと思います。

APIは、wx.StaticBitmap.__init__()「通常、これはサブクラスのinitからのみ呼び出す必要があります。これは、単純な古いwx.Controlはあまり有用ではないためです」と述べています。同じページに、「第2フェーズを実行してGUIコントロールを作成する」と説明されているwx.StaticBitmap.Create()メソッドも表示されます。2フェーズプロセスの最初のフェーズのみを完了しています。メソッドを呼び出してみてCreate()、それが役立つかどうかを確認してください。

その場合、質問は「なぜ作成に「フェーズ2」が必要なのか」ということになります。もう少し掘り下げてみたところ、wx.ImageAPIから次の抜粋が見つかりました。

wx.Imageをwx.DCに直接描画することはできません。代わりに、プラットフォーム固有のwx.Bitmapオブジェクトを、wx.BitmapFromImageコンストラクターを使用して作成する必要があります。

これは、wxPythonの画像レンダリングにプラットフォームに依存する部分があり、画像の作成を2つのフェーズに分割する必要があるか、論理的に保証されていることを意味しているようです。

最後の注意点は、ご覧のとおり、wx.ImageAPIはwx.BitmapFromImage()メソッドを使用するように指示しているということです。私はドキュメントを読みました、そしてそれはあなたのためにすべての仕事をするかもしれないように見えます。

幸運を!

于 2012-09-22T01:21:18.580 に答える