Смещение по вертикали при отображении изображения с помощью wxPython

Вот как мы можем отобразить изображение в кадре wxPython.

import wx

class Viewer(wx.App):
    def __init__(self, redirect=False, filename=None):
        wx.App.__init__(self, redirect, filename)
        self.frame = wx.Frame(None, title='Viewer')
        self.panel = wx.Panel(self.frame)
        self.imageCtrl = wx.StaticBitmap(self.panel, wx.ID_ANY, wx.BitmapFromImage(wx.EmptyImage(800,600)))
        self.mainSizer = wx.BoxSizer(wx.VERTICAL)
        self.mainSizer.Add(self.imageCtrl, 0, wx.ALL, 5)
        self.onView('0.png')
        self.panel.Layout()        
        self.frame.Show()

    def onView(self, filename):
        img = wx.Image(filename, wx.BITMAP_TYPE_ANY)
        self.imageCtrl.SetBitmap(wx.BitmapFromImage(img))
        self.panel.Refresh()
        self.mainSizer.Fit(self.frame)

Viewer().MainLoop()

Если тестовое изображение имеет большие размеры, например 912 x 3616 (здесь я использовал 0.png), я хотел бы установить вертикальное смещение, то есть верхний угол кадра не должен быть (0,0) от изображения но (0,500), т.е. смещение по вертикали 500px.

Как установить вертикальное смещение изображения с помощью wxPython?

1 ответ

Если вы действительно хотите обрезать изображение, самое простое - просто сделать это, то есть создать новое изображение, используя wxImage::GetSubImage() с регионом, начинающимся с (0, 500).

Чаще всего вы используете прокручиваемое окно, а затем можете изначально прокрутить его на 500 по вертикали, но все же позволить пользователю прокрутить назад к исходной точке.

Также возможно использовать окно прокрутки без полос прокрутки, но это кажется довольно бессмысленным.

Другие вопросы по тегам