Il mio progetto wxPython ha una cornice, con più sizers annidati.wxpython: ridimensiona automaticamente un'immagine statica (staticbitmap) per adattarla alla dimensione
Uno dei sizers contiene una wxStaticImage con una bitmap che viene letta da un file.
Ho bisogno che l'immagine venga ridimensionata (crescente/ristretta) ogni volta che il fotogramma viene ridimensionato, quindi si adatta ai suoi confini.
(penso che) so come ridimensionare un'immagine. Quello che non so è come:
- come ottenere larghezza o l'altezza del contenitore dell'immagine?
- forse ho trascurato una proprietà che lo fa auotmaticamente?
(per ora, non mi dispiace le proporzioni)
Edit: Soluzione completa
ho capito sbagliato su wxStaticBitmapin.Size. NON descrive la dimensione dell'immagine (vale a dire la risoluzione dell'immagine), ma piuttosto - wxStaticBitmapin.Size fornisce le dimensioni dello slot del misuratore o in altre parole: la dimensione del widget corrente.
quindi con il codice di Mik ora come inserirmi nello slot.
in aggiunta a una soluzione di Mike: quando si utilizza evento OnSize su un telaio, non dimenticate di aggiungere event.Skip(). altrimenti i calibratori smetteranno di riallineare. Altertanively, usa semplicemente onSize dell'immagine.
ecco il metodo evento complete:
def bitmap1_onSize(self, e=None):
W, H = self.bitmap1.Size
if W > H:
NewW = W
NewH = W * H/W
else:
NewH = H
NewW = H * W/H
img = wx.Image(self.frame_file_picker.Path, wx.BITMAP_TYPE_ANY)
img = img.Scale(NewW,NewH)
self.bitmap1.SetBitmap(wx.BitmapFromImage(img))
e.Skip()
Mi chiedo che ora ci sia una classe derivata che implementa questo. Questo caso d'uso non è così insolito, penso. – buhtz